- login-shell与non-login shell的定义区别: 从定义看它们的区别在于在使用shell之前是否要输入用户名和密码。如,当你登陆至tty1~tty6时,此时你取得的bash就是login-shell,因为你获取bash的过程输入输入账户和密码;当你在X window界面,你使用的bash就是non-login shell,因为这个过程不需要账户和密码;另外,当你在当前bash中使用bash命令,那么第二个bash(子进程)也是non-login shell,这个过程同样不需要输入账号和密码。
- login shel与non-login shell根本性区别,之所以要分login shell与non-login shell是因为它们读取的配置文件数据不一样。 login shell一般只会读取/etc/profile和~/.bash_profile(或者~/.bash_login或者~/.profile)两个配置文件。
- /etc/profile解析
- #/etc/profile: system-wide .profile file for the Bourne shell (sh(1))
- # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
- if [ -d /etc/profile.d ]; then
- for i in /etc/profile.d/*.sh; do
- if [ -r $i ]; then
- . $i
- fi
- done
- unset i
- fi
- if [ "$PS1" ]; then
- if [ "$BASH" ]; then
- # The file bash.bashrc already sets the default PS1.
- # PS1='\h:\w\$ '
- if [ -f /etc/bash.bashrc ]; then
- . /etc/bash.bashrc
- fi
- else
- if [ "`id -u`" -eq 0 ]; then
- PS1='# '
- else
- PS1='$ '
- fi
- fi
- fi
(function(w, d, g, J) { var e = J.stringify || J.encode; d[g] = d[g] || {}; d[g]['showValidImages'] = d[g]['showValidImages'] || function() { w.postMessage(e({'msg': {'g': g, 'm':'s'}}), location.href); } })(window, document, '__huaban', JSON);
阅读(1137) | 评论(0) | 转发(0) |