login shell 和 non-login shell 的相关问题
- login shell:去的bash时需要完整的登录流程。就是说通过输入账号和密码登录系统,此时取得的shell称为login shell
- non-login shell:取得sbash接口的方法不需要重复登录的举动。如以X Window登录登录linux后,再以X的图形界面启动终端机,此时那个终端机并没有需要输入账号和密码,那个bash环境就是non-login shell。在原本的bash环境下再次执行bash命令,同样也没有输入账号密码就进入新的bash环境(前一个bash的子进程),新的bash也是non-login shell。
那么,到底两者的区别在哪里?
login shell:此种方式登录时,shell会重新读取/etc/profile和~/.bash_profile来应用新的环境变量。
non-login shell:此时shell不会读取/etc/profile和~/.bash_profile,而是读取~/.bashrc来应用新的环境变量。话说标题是区别与影响,影响的东西自然源于区别。回到文章开头的问题,su切换用户没有获取用户的环境(当时用的命令是"su xxoo",这里xxoo为要切换的用户,以root身份执行的此命令),看来问题就在这倆login方式,根据现象我们可以判断 su xxoo执行了non-login shell。
为了验证上面的判断,我们查看了su命令的简单帮助:
[root@isayme ~]# su --help
Usage: su [OPTION]... [-] [USER [ARG]...]
Change the effective user id and group id to that of USER.
-, -l, --login make the shell a login shell
很明显,我的判断是正确的,默认情况下是执行的non-login shell,因为要执行login shell需要在su后面添加参数"-"或"-l"或"--login"。所以要在su之后获取用户的环境变量,需要执行类似"su - xxoo"之类的命令。
另外还有三个提示:
PS1:bash在读取/etc/profile后会读取各账户的个人配置文件,所读取的个人配置文件主要有三个:~/.bash_profile,~/.bash_login,~/.profile。其实bash在读取的时候只会读取的上述三个文件的其中一个,而读取的顺序则就是上面的顺序。也就是说bash会依次查找上述三个个人配置文件,且找到一个后,后续的文件便不再读取。
PS2:当以non-login shell登录时,如果希望获取用户的环境变量,执行"source ~/.bash_profile"即可(.bash_profile根据情况也可能是.bash_login或.profile),而其中source可以用小数点替换,即"source ~/.bash_profile"等价于". ~/.bash_profile"。source命令的解释可以自行搜索。
PS3:其实有的linux发行版的login shell也会读取.bashrc文件,如Fedora11中执行 "vim ~/.bash_profile"会发现 "if [ -f ~/.bashrc ]; then . ~/.bashrc fi"。这里就使用了PS2的提到的用小数点替换source特性,即在./bash_profile会读取执行.bashrc文件。
转自:http://blog.sina.com.cn/s/blog_59c0a56201016im6.html
最新文章
- python-generator生成杨辉三角
- powerDesigner 报Unable to connect SQLState=08004 解决方法
- Ajax与用户交互的存储格式JSON
- 2016年11月13日 星期日 --出埃及记 Exodus 20:4
- shell脚本摘要
- Qt4升级Qt5注意问题
- WPF 分页控件 WPF 多线程 BackgroundWorker
- 关于Cookie跨域操作的一些总结
- winform Execl数据 导入到数据库(SQL) 分类: WinForm C# 2014-05-09 20:52 191人阅读 评论(0) 收藏
- 《Spring敲门砖之基础教程第一季》 第一章 概要介绍
- jquery知识点积累
- (89c51)16x16点阵屏幕的实现
- Linux lsof命令详解和使用示例【转】
- 关于oracle数据库(5)增删改查
- JSP servlet的配置与使用
- nginx session 配置失效解决
- 三方面搞定http协议之“请求方法”
- 基于MMSE的预测
- PhotoShop 常用快捷键
- 06SVM线性不可分时scikit-learn实现