Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60430
  • 博文数量: 17
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-07 11:16
文章分类

全部博文(17)

文章存档

2011年(1)

2009年(16)

我的朋友

分类:

2009-01-13 15:55:57

Unix的Shell有两大主流,一位Bourne shell: /bin/sh 一为csh: /bin/csh. 此二shells已老迈,但极具权威,并分别繁衍不少后代。但sh的子孙比较多,如ksh,zsh,bash,皆很活跃,bash是Linux上的标准shell。而csh之后似乎只有tcsh较著名。名著"Life with UNIX"作者Don Libes提起说,"有很多人两类shell都用,用sh写script,用csh做interactive shell" "csh号称模仿C语言,可是写script的人[他们当然大都是C的行家],往往觉的还是sh好用。"
 
tcsh是csh的superset,有tcsh可用,当然改用tcsh.如果是习惯sh的人,可以改用GNU的好东西Bash(Bourne again shell).完全不用任何设定就有doskey那种功能了,还有种种奇妙功能,言之不尽啊。
 
关于TCSH的环境设定:
在tcsh底下,有一个成为source的内建指令,提供使用者利用已编好的档案内容作为指令输入。利用这个功能,我们可将许多大量但时常使用到的一群指令编入一个文件,然后执行它们。
 
注意: 这个功能并不同于shell script的执行,因为一般的shell script通常会开启另一个shell的process,所以shell script的执行并不会影响到目前的环境。然而source不同,它相当于使用者在指令列上键入一连串的指令,因此它在结束后所有的环境变量均会留在目前使用者所执行的shell上面。通常我们用shell script来执行大批的程式,而利用source资料檔来完成我们对自己使用环境的设定。
 
当你login的时候,系统会自动产生一个tcsh的process,然后执行以下四个初始设定文档:
 
/etc/csh.cshrc
/etc/csh.login
$HOME/.tcshrc    (若不存在则执行$HOME/.cshrc)
$HOME/.login     
 
其中HOME是一个环境变量,是用户的目录。若在以上的任何档案中更改了HOME的值,tcsh也会根据所改变的HOME
 
所要执行的文档,如.tcsh中有一段:
 
set home = home/$HOSTTYPE
set env HOME $home
cd $HOME
 
则会把user的HOME由$HOME 改成 $HOME/$HOSTTYPE. 以user jjtseng为例,在他login的时候,HOME是/u/gcp/82/8217529,而当他在sun4的机器login是,会先执行
 
/etc/csh.cshrc
/etc/csh.login
/u/gcp/82/8217529/.tcshrc
 
然后在/u/gcp/82/8217529中由于HOME被改成/u/gcp/82/8217529/sun4,当/u/gcp/82/8217529/.tcshrc执行结束时,此时他的当时目录变成:
 
/u/gcp/82/8217529/sun4
 
然后才执行/u/gcp/82/8217529/sun4/.login的内容.
 
最后,当使用者离开系统(logout)时,系统会再执行$HOME/.logout作为离线前处理之用。
 
 
 
 
 
 
阅读(2882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~