SHELL的功能及分类
SHELL是UNIX作业系统中的’‘命令编译器’’,它基本上是一个常驻的执行程式,主要功能是接受使用者的指令、寻找命令的所在位置并加以执行。
UNIX系统中SHELL大致可分为两大阵营:
- 一是1970年代前期由美国贝尔实验室所发展的sh(Bourne Shell),它是UNIX系统中的标准SHELL,此阵营后来又发展出ksh(Korne Shell)、bash(Bourne Again Shell)等功能更多的介面;
- 二是美国柏克来大学在1970年代后期发展的csh(C Shell),和它属于同一阵营的有tcsh等。
无论上述的那一种shell,它的基本功能与作用都是相同的。
在UNIX系统中,使用者可视自己的需要来选择ksh、bash、csh、tcsh;
各个shell的配置文件
常用的csh 和bash 区别
bash 是大多数Linux系统以及Mac OS X默认的shell
主要是上面两大阵营的区别,导致了如下的区别。
配置文件上的区别
.cshrc 是 csh的配置文件
.bashrc 是 bash的配置文件
设置环境变量上的区别
csh
setenv LANG "zh_CN.GBK"
setenv NLS_LANG "SIMPLIFIED CHINESE_CHINA.AL32UTF8"
bash
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
了解下其他概念
用户变量: 用户定义,可以修改;
环境变量: 系统提供,不用定义, 可以修改。
在bashrc中,可以利用export将用户变量转为环境变量
set JAVA_HOME=/usr/share/jdk1.5.0_05
export JAVA_HOME
set PATH=$JAVA_HOME/bin:$PATH
export PATH
set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
set主要是用来设置变量,这里的变量是普通变量,就像C语言里一样,使用一个变量之前要申明一下。
相关配置设置
UNIX环境中能使用中文
sh系列: $HOME/.profile
stty -istrip cs8
LC_CTYPE=ISO_8859_1
export LC_CTYPE
csh系列:$HOME/.cshrc
stty -istrip cs8
setenv LC_CTYPE iso_8859_1
提示符号后面能随着路径更动而改变
sh系列: $HOME/.profile
PS1=''`PWD`> ''
或
PS1="w> "
csh系列:$HOME/.cshrc
set prompt=''%~> ''
umask设置
新增档案或目录的属性(mode): 默认是系统管理者以create所设定的属性减去设置的umask值,
如系统管理者所设定的档案权利状态是777,而使用者又自行设定了umask 022,
则这个使用者在他个人帐号下的每一个新产生的档案的权利状态都将会是755(777-022)。
Function 与 Alias
我们可以用function或alias指令实现用一简短字串来代替这一个或一连串的指令,
function的用法如:
vi(){
mesg n
/usr/ucb/vi $*
mesg y
}
其中’‘vi’‘是function的名称,{}之间是’‘vi’'这个function所包含的指令内容,需要注意的是:function的名称不能与shell的内键指令名称相同,否则这个function无法成立。
alias指令的用法如:
alias vi "mesg n; /usr/ucb/vi !*; mesg y"
其中vi即是’’’'中所包含字串的别名,别名与各shell的名称可以一样(alias本身也是一个内键指令)。
若我们在某一shell中同时建立一名称相同的function与alias,则alias的执行次序优先function 的执行。
设置变量
sh系列:
[VAR]=[STRING or NUMBER]
csh系列:
set [var] = [STRING or NUMBER]
设置环境变量
与变量的区别: 当我们离开shell、进入另一个程序之后,仍需要使用这个变量,我们需要设置这个变量为环境变量
sh系列:
export [VAR]
csh系列:
setenv [var] [STRING or NUMBER]
|