快速业务通道

交互式登陆shell和交互式非登陆shell

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-23

当启动shell时,它将运行启动文件来初始化自己.具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的交互方式(比如通过bash),又或者是一个非交互式shell(用来执行shell脚本).要执行启动文件中的命令,用户就具备读的权限,而一般的Linux发行版本都会把对应的命令放在一些启动文件中.

1:交互式登陆shell

交互式登陆shell指的是当用户登录系统时所用的那个shell(可以默认指定,如bash shell).登录shell 将查找几个不同的启动文件来处理其中的命令, bash shell 处理文件的顺序如下:

/etc/profile shell执行/etc/profile中的命令.设置这个文件后,可以为系统内所有的bash用户建立默认的特征(不同版本的Linux在此文件放置的命令不尽相同);

~/.bash_profile、~/.bash_login、~/.profile 然后shell依次查找这些文件,并执行它找到的第一个文件中的命令.可以将命令放在这些文件中,以重写/etc/profile文件中默认的设置;

~/.bash_logout 当用户注销时,bash执行文件~/.bash_logout中的命令,这个文件包含了退出会话时执行的清理命令,如:删除临时文件等;

注:~/ 是用户主目录的速记符

2:交互式非登陆shell

交互式非登陆shell指的是如果启动了一个bash shell 而没有等录系统(如在CLI 提示符中键入bash),则启动了一个交互式非登录shell.交互式非登录shell并不执行前面提到的启动文件中的命令,然而交互式非登陆shell从登录shell继承了由这些启动文件设置的shell变量.

拥有帝国一切,皆有可能。欢迎访问phome.net

/etc/bashrc 尽管不是通过bash直接调用,但许多~/.bashrc文件调用/etc/bashrc.这种设置超级用户可以为系统内的非登陆shell建立默认属性.

.bashrc 交互式非登陆shell执行~/.bashrc文件中的命令,而登陆shell的启动文件(如.bash_profile)通常会运行这个文件.这样,登陆shell和非登陆shell都可以运行.bashrc中的命令了.

3:非交互式shell

非交互式shell指的是以shell script(脚本)方式运行.在这种模式在运行时shell 并不与用户进行交互(除非在运行时需要用户指定运行参数),而是读取存放在文件中的命令并执行它们.当它读到文件的结尾,shell 也就终止了.这些shell从登陆时就继承了由这些启动文件设置的shell变量.

BASH_ENV 非交互式shell查找环境变量BASH_ENV(或者当作为sh调用时为的ENV),并执行由该变量命名的文件中的命令.

4:建立启动文件

尽管有很多启动文件和shell,但用户通常只需要主目录下的.bash_profile和.bashrc文件..bash_profile中类似下面的命令将为登陆shell执行.bashrc(如果该文件存在)中的命令.进行了这个设置后,.bashrc中的命令就由登陆和非登陆shell执行.

if [ -f ~/.basgrc ] ; then .~/.bashrc; fi

[图例]

提示:

使用.bash_profile设置PATH

.bashrc中的命令可能执行多次,并且子shell继承已导出的变量,最好将哪些添加到已有变量中的命令放到.bash_profile文件中.比如,下面的命令将home目录的子目录bin添加到PATH中,应该将其改动到.bash_profile文件中:

PATH=$PATH:$HOME/bin 拥有帝国一切,皆有可能。欢迎访问phome.net

如果将这条命令放到文件.bash_profile中而不是文件.bashrc中,那么只有在用户登陆之后这个字符串才会添加到PATH变量中.

修改.bash_profile文件中的变量可以将在交互式会话中所做的改动传递给子shell.相反,修改.bashrc中的变量将重写继承自父shell的那些修改.

本文出自 “探索与发现” 博客,请务必保留此出处http://misujun.blog.51cto.com/2595192/732708

拥有帝国一切,皆有可能。欢迎访问phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号