loginshell和non loginshell
本文转载自http://hi.baidu.com/ladybeta/blog/item/11f36b511d1e52571038c2d1.html/cmtid/0c0b1c2ec39599371e308947
我们知道当在shell里面运行应用程序的时候,表现形式会受到配置参数的影响,最主要的是一些path,或者shell本身的配置。而linux的配置 一般分成两种,一种是profile,另一种是rc。profile是和用户和机器配置相关的,比如USERNAME,HOSTNAME或者HOME。而 rc则是主要负责一些和路径等和运行时更相关的参数,最主要的是PATH。
在第一次用户login的时候,就会初始化profile相关的脚本,这就是所谓的login shell。当在已经存在的shell里面启动另外一个shell的时候,比如使用"bash"或者"su",启动的这个新shell就会初始化rc相关 的脚本。这个shell就称为non-login shell。
login shell会执行的脚本通常有 /etc/profile和~/.bash_profile。
non-login shell会执行的脚本通常有/etc/bashrc (在Ubuntu Jaunty 上是/etc/bash.bashrc)和~/.bashrc。
在tty下login进去,得到的是一个login shell。之后使用bash或者su命令得到的是non-login shell。而在Ubuntu Jaunty下的GNOME用terminal启动出来的shell是non-login shell。退出该non-login shell的话,只需要exit即可。在所有的shell中,子shell继承父shell的env环境变量。但是要注意env的初始创建和shell并 没有什么关系。
posted on 2012-05-06 11:20 RichDonkey 阅读(131) 评论(0) 收藏 举报
浙公网安备 33010602011771号