一、SHELL的功能及分类
SHELL是UNIX作业系统中的'命令编译器'(Command Inter-preter),它基本上是一个常驻的执行程式,它在使用者一签入成功後就立即被载入(可在签入後以ps指令看到),主要功能则在於接受使用者的指令、寻找命令(即档案)的所在并加以执行。
因此,SHELL的不同可能直接影响使用者输入指令的方式、档案寻找的程序及速度等。
UNIX作业系统的SHELL大致可分为两大系统,一是1970年代前期由美国贝尔实验室(BELL LAB)所发展的sh(Bourne Shell),它是UNIX系统中的标准SHELL,此一系统後来又发展出ksh(Korne Shell)、bash(Bourne Again Shell)等功能更多的介面;另一系统是美国柏克来大学(Berkekey)在1970年代後期所发展的csh(C Shell),和它属於同一系统的有tcsh等。
无论上述的那一种shell,它的基本功能与作用都是相同的,它们之间的不同处可能在於对同一动作处理程序上的不同(会影响命令处理的速度)、所提供内键命令及变数的或多或寡等,其中内部命令与变数的多寡直接影响到shell功能的多寡,是使用者在使用时最容易直接感受到的。
在UNIX系统中,使用者可视自己的需要执行sh、ksh、bash、 csh或tcsh来代替原先使用的shell、改变正在使用的环境;也可以用'chsh'指令、输入想使用的shell的路径及名称(如/bin/csh,在Y11-Y14机器上还需输入个人使用者的密码),改变以後每次 login时所使用的shell、使自己所使用的环境能最满足自己使用上的需要。
二、SHELL 的START FILES
不管你的login shell是那一种shell,每一个shell都有它自己的start files,我们设定理想环境时所需使用的指令与设定的变数,都可以写在这些start files中,在login时先後加以执行,这些start files的名称分别是:
SHELL START FILES
sh /etc/profile
$HOME/.profile
bash /etc/profile
$HOME/.profile(or $HOME/.bashrc)
csh None
$HOME/.cshrc & $HOME/.login
tcsh None
$HOME/.cshrc(or $HOME/.tcshrc)
& $HOME/.login
如果这些档案都存在,那麽它们的执行顺序将是:
1. sh系列 /etc/profile --> $HOME/.profile
2. csh系列 $HOME/.cshrc --> $HOME/.login
在这些start files中,/etc下的profile是系统管理者为大家设定的,一般使用者无法做任何更动,如果对系统管理者的
设定觉得不够或不符需要,则可在个人帐号下的.profile、.cshrc、.login增加或修正,尤其是对csh及tcsh的使用者而言,因为在/etc下并没有start files,所以也不会有系统管理者设定好的环境可以使用,使用者就必须自行设定所需要的所有的变数与指令,否则常会有寸步难行的感觉,最常见的如许多指令都因找不到而不能用(因为没有设path)、键无法使用 (因键的作用没有定义)...等。