一).bash_profile和.bashrc何时调用
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:junbin lin
链接:http://www.zhihu.com/question/22990045/answer/23282396
来源:知乎
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:junbin lin
链接:http://www.zhihu.com/question/22990045/answer/23282396
来源:知乎
Linux系统默认使用的shell为bash,在shell启动的时候会读取根据情况读取.bash_profile和.bashrc文件。
准确的说,当shell是交互式登录shell时,读取.bash_profile文件,如在系统启动、远程登录或使用su -切换用户时;当shell是交互式登录和非登录shell时都会读取.bashrc文件,如:在图形界面中打开新终端或使用su切换用户时,均属于非登录shell的情况。
简单的说,.bash_profile只在会话开始时被读取一次,而.bashrc则每次打开新的终端时,都会被读取。
准确的说,当shell是交互式登录shell时,读取.bash_profile文件,如在系统启动、远程登录或使用su -切换用户时;当shell是交互式登录和非登录shell时都会读取.bashrc文件,如:在图形界面中打开新终端或使用su切换用户时,均属于非登录shell的情况。
简单的说,.bash_profile只在会话开始时被读取一次,而.bashrc则每次打开新的终端时,都会被读取。
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:杨永峰
链接:http://www.zhihu.com/question/22990045/answer/25253297
来源:知乎
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:杨永峰
链接:http://www.zhihu.com/question/22990045/answer/25253297
来源:知乎
两个文件都是 shell 启动时要读取的 startup files。在不同的状态下,读取的文件及顺序不一样,一般按照如下规则进行:
interactive login shell 的形式调用,Files read
- /etc/profile
- ~/.bash_profile, ~/.bash_login or ~/.profile (first existing readable file is read)
- ~/.bash_logout (upon logout)
interactive non-login shell 的形式调用,Files read:
- ~/.bashrc //该文件通常指向 ~/.bash_profile
non-interactively, 脚本文件通常用这种方式。Files read:
- defined by BASH_ENV
Invoked remotely,Files read:
- ~/.bashrc
二)关于login shell 和 no-login shell的解释:
http://www.2cto.com/os/201306/223762.html
解析login shell和no-login shell
login shell:取得bash 时需要完整的登入流程,就称为login shell。举例来说,同tty1~tty6登入时, 需要输入用户名和密码,此时取得的bash就称为login shell
non-login shell:取得bash介面的方法不需要重复登入的动作。
举两个例子
(1)以X window登入linux后,再以X 的图形化介面启动终端机,此时那个终端机并不需要再次的输入用户名和密码,那个bash的环境就称为non-login shell
(2)在原本的bash环境中再次下达bash这个指令,同样没有要求输入用户名和密码,那个第二个bash也是non-login shell
login shell 和 no-login shell 的执行顺序:
Login shells:
/etc/profile
/etc/profile.d
~/.bash_profile
~/.bashrc
/etc/bashrc
Non-login shells:
~/.bashrc
/etc/bashrc
/etc/profile.d