linux 用户切换su 命令横杠的作用

来源:岁月联盟 编辑:exp 时间:2011-11-13

 

挺凑巧的,最近老有同事问起这些问题,所以总结一下。

 

1. 首先用help理解su,sudo su,sudo

2. 其次理解"login shell" and "interactive shell".

 

"When Bash starts executes the commands in a variety of different scripts.

(1) When started as an interactive login shell: Bash reads and executes the /etc/profile (if it exists). After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile in that order, and reads and executes the first one (that exists and is readable).  When a login shell exits: Bash reads and executes ~/.bash_logout (if it exists).

(2) When started as an interactive shell (but not a login shell): Bash reads and executes ~/.bashrc (if it exists)."

显然login shell和interactive shell在环境的设置上是存在差别的,详细可以参考:http://groups.google.com/group/linux.debian.user/browse_thread/thread/2b71ecfc45789958/7bff24e3bae74b36?lnk=raot

3.  然后su命令的横杠就非常容易理解了,参数横杠-, 是为了让切换获取的shell是一个login shell

 -, -l, --login               make the shell a login shell

 

摘自 linhx的专栏