Linux 的 用户登录后,会执行各个 profile。
首先,所有用户都会执行 /etc/profile。
然后, 如果用户是GNU bash 则会 依次执行用户目录下的
.bash_profile 最先
.bash_login 依次
.profile 最后。
当用户退出时,会执行
.bash_logout
如果没有某个文件,那就忽略执行,而不会报错。
执行新的 bash 的时候,例如直接执行 bash ,运行新的 bash后
它会先执行 /etc/bash.bashrc
然后是 $HOME/.bashrc
如果是执行 bash Script(非交互式),它会检查BASH_ENV变量,如果它指定了值,就会先执行指定的这个文件。
Posix bash shell
如果是 Posix sh,用户登录后,则是执行 /etc/profile 和 $HOME/.profile
如果执行交互式 sh,产生一个新 shell,bash会检查 ENV环境变量,并且执行配置文件内容。
如果执行 sh Script,则不会启动其他配置文件。
例如有一个 pchs.sh的脚本文件。
#! /bin/bash
.........
chmod +x pchs.sh
./pchs.sh 与 sh pchs.sh 的执行是有区别的。
如果 父Shell 是 GNU BASH, ./pchs.sh 会以 GNU bash的 方式执行。
sh pchs.sh 则是以 Posix bash SHELL 执行脚本。