|
Invoked as an interactive login shell, or with --login
When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.
When a login shell exits, Bash reads and executes commands from the file ~/.bash_logout, if it exists.
Invoked as an interactive non-login shell
When an interactive shell that is not a login shell is started, Bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force Bash to read and execute commands from file instead of ~/.bashrc.
So, typically, your ~/.bash_profile contains the line
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
after (or before) any login-specific initializations.
以上是manual对于bash的描述中的一段。其中讲到当bash是作为login shell时,执行/etc/profile然后是~/.bash_profile, ~/.bash_login, 和 ~/.profile的存在的第一个。但是事实上之后也会执行~/.bashrc,就是事实上无论是login shell和non-login shell都会执行~/.bashrc,即使.bash_profile里没有" if [ -f ~/.bashrc ]; then . ~/.bashrc; fi "这一段。
我的问题是:
为什么login shell的描述中不写之后会执行.bashrc呢?可能是我没有理解手册的意思。大家说说意见! |
|