
一、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)、键无法使用 (因键的作用没有定义)...等。
二、常见的需求与常用的指令
当我们在UNIX环境中工作,常会为了使自己使用时更方便而产生某些需求,这些常见的需求及其设定方式如:
1. 希望键能有作用
在$HOME/.profile或$HOME/.cshrc中加上
stty erase "^H"
2. 希望在UNIX环境中能使用中文
在$HOME/.profile(sh系列)中加上
stty -istrip cs8
LC_CTYPE=ISO_8859_1
export LC_CTYPE
在$HOME/.cshrc(csh系列)中加上
stty -istrip cs8
setenv LC_CTYPE iso_8859_1
3. 希望能有像DOS系统中DOSKEY的功能
只要是使用bash及tcsh即具备此项功能。
4. 希望能使用工作站上的汉书编辑器(he)
在$HOME/.profile(sh系列)中加上
LANG=big5
export LANG
在$HOME/.cshrc(csh系列)中加上
setenv LANG big5
5. 希望提示符号能随着路径更动而改变
在sh及csh中并无法做到这个功能,而在bash及tcsh中的设定则分别是:
bash:在$HOME/.profile中加上
PS1='`PWD`>; '
或 PS1="w>; "
tcsh:在$HOME/.cshrc中加上
set prompt='%~>; '
除了上面所提到针对特殊需要所做的设定之外,在做环境设定时常用到的指令还有:
1. stty
设定对输入(input)的定义与如何做输出,这个指令的叁数极为众多,我们可用
stty -a
看到所有的叁数及其设定,在这些叁数中,常用的有:
istrip (-istrip)
将所有的输入截取成7 bits的资料,然而中文的资料都是8 bits的,所以当需要使用中文时,请加上'-istrip'这个叁数,以避免输入的资料被破坏。
cs7 cs8
设定每一字元的资料都是7 bits或8 bits的资料, 因此在需要使用中文时,通常会有如下的设定:
stty -istrip cs8
iuclc (-iuclc)
将标准输入的大写字母视为小写(或取消)。
olcuc (-olcuc)
将小写的字母以大写型态输出(或取消)。
echo (-echo)
将所有的输入由标准输出处输出(或取消输出,即在萤幕上看不到自己的输入)。
stty除了这些叁数外,还可以用来定义某一个键的特定功能,如:
stty erase "^H"
stty kill "^U"
2. mesg y (mesg n)
若在工作时不希望被talk等讯息所打扰,可下'mesg n' 指令,以避免外来迅息中断正要进行的工作('mesg y'则是恢复与外界的沟通)。
3. umask [nnn]
设定新增文件或目录的属性(mode),新文件或新目录的mode为系统管理者以create所设定的属性减去nnn,如系统管理者所设定的文件权利状态是777,而用户又自行设定了umask 022 则这个用户在他个人帐号下的每一个新产生的文件的权利状态都将会是755(777-022)。
4. Function 与 Alias
对於一连串或某一指令,我们可以用function的方式(在sh、ksh、bash中)或alias指令(在csh、tcsh、ksh、bash 中),用一简短字串来代替这一个或一连串的指令,function的用法如:
vi(){
mesg n
/usr/ucb/vi $*
mesg y
}
其中,'vi'是function的名称,{}之间是'vi'这个function所包含的指令内容,而要注意的是:function的名称不能与shell的内键指令(builtin)名称相同,否则这个function即无法成立。
同样的功能,alias指令的用法如:
alias vi 'mesg n; /usr/ucb/vi !*; mesg y'
其中vi即是''中所包含字串的别名,别名与各shell的builtin名称可以一样(alias本身也是一个内键指令)。
若我们在某一shell中同时建立一名称相同的function与alias(如在bash中),则alias的执行次序优先於function的执行。
相关链接
最新评论共有 0 位网友发表了评论
发表评论
资讯先锋网·资讯前沿-技术先锋
本月热门
阅读排行