背景:搞docker用不同的指令, 通过三条指令分别去查看当前env,env不同,于是去研究bash的四种不同启动方式和文件读取
docker run -it image env
docker run -it image bash , env
docker run -dt --name test image bash, docker run -it test bash, env
bash有四种登录方式:
login non-login interactive non-interactive
login & non-login:
login:在输入了账号密码的情况,或者打开bash使用参数bash -l / --login,login状态下,bash默认加载/etc/profile和~/.profile文件
不同内核的linux系统在读取文件上会稍有差异
nonlogin: 用户在登录状态下运行的其他shell,读取/etc/bashrc ~/.bashrc
可以通过 shopt login_shell 命令查看当前是否login状态,on为login,off为非login
/etc/profie 文件配置了全局变量,对所有用户生效,会在用户登录时读取该文件
/etc/bashrc 每次加载bash时,会读取该文件 ~/.bashrc存放个人相关的设置