su -和login shell
上一篇 /
下一篇 2008-10-10 15:03:39
最近部署一个java程序的时候,root用户执行jboss的启动脚本,反复提示jdk程序出错。
但是该脚本据上次正确执行后未被改动,且曾经被正确执行无数遍了。那问题出在哪里呢?
后来反复实践,发现我是在admin用户下su到root用户,没有正确加载环境变量所致。
只要在su后面加一个“-”,问题迎刃而解,原来小小的“-”是罪魁祸首。
下面再强调下基本概念,血的教训啊
login
shell会执行/etc/profile和.bash_profile,/etc/bashrc和.bashrc
non-login shell则仅执行/etc/bashrc和.bashrc
查看su的man手册,su - 切换用户将会使用login shell;不带-的话,则会使用non-login shell
PS:在RHEL下,辨别login和non-login shell另外一种方法是:exit命令后如果会清屏则是login shell,反之则是non-login shell
收藏
举报
TAG: