.bash_profile、.bash_logout和bashrc文件

jackxiang 2010-9-29 18:35 | |
【from: Learning the bash shell】


用户主目录下的这些文件对bash有特殊含义。它们在用户登录或调用另一bash shell时给出了一种自动建立其登录帐号环境的方式,并允许退出时执行各种命令。这些文件存在于用户主目录下,其外置依赖于系统管理员对用户帐号的设置。如果这些文件不存在,用户登录使用默认系统文件/etc/profie。可以使用流行的文本编辑器轻易的创建自己的bash文件。

最重要的bash文件是.bash_profile,它在用户每次登录到系统时被读取,其中包含的命令被bash执行。如果查看一下自己的.bash_profile,可能会发现类似下面的行:

这些行定义了用户登录帐号的基本环境,在已存在行的后面可以编辑自己的.bash_profile,直到退出再次登录,该文件被重新读取后,.bash_profile中键入的内容才会生效。可以使用source命令或者匿名命令(.),如:source .bash_profile、. .bash_profile。

bash允许有.bash_profile的两个同义文件:来源于C shell的.login的.bash_login以及来源于Bourne shell和Korn shell文件的.profile的.profile。登录时三者中只有一个被读取,如果用户根目录下.bash_profile不存在,则bash查找.bash_login,如果它不存在,则查找.profile。

bash查找这些同义文件的好处是,如果曾经用过Bourne shell,你可以保留它,如果需要加入特定的bash命令,可以将它们放入.bash_profile中并在后面跟一条命令source .profile。登录时,所有特定的bash命令均被执行,然后bash将会调用.profile,执行其保留的命令。即使决定仍使用Bourne shell,也不必修改已存在的文件,类似的方法也可以用于.bash_login和C shell的.login,但由于这些shell基本语法的差异性,这不是一个好主意。


.bash_profile只被登录shell读取并执行。如果你通过在命令行上键入bash启动一个新的shell,他就会试图读取.bashrc中的命令。这种策略给出将登录是需要的启动命令和运行一个子shell所需的命令分离开的灵活性。如果你需要在登录shell和启动子shell命令是进行一样的操作,可以在.bash_profile中使用source命令执行.bashrc。如果.bashrc不存在,那么启动一个子shell时就没有命令被执行。

文件.bash_logout在每次登录shell退出时被读取并执行。它提供了定制用户环境的功能。如果要执行诸如删除帐号内临时文件或记录登录系统所花时间命令,则可将这些命令放在.bash_logout内。该文件不必一定存在与帐号内,如果不存在,退出时不再执行其他命令。

来源:http://hi.baidu.com/hongszh/blog/item/76d9885094a107618435242d.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/3566/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]