共计 751 个字符,预计需要花费 2 分钟才能阅读完成。
Shell 是 Linux 用来将用户输出的指令发送给内核的接口,并将内核执行指令后的后果返回输入。
这里应用 Bash shell 作为示例,shell 能够分成两类:Login Shell 和 Non Login Shell,两种类型别离执行不同的脚本来配置 shell 执行环境。
Login Shell
用户胜利登陆后应用的是 Login shell。例如,当你通过终端、SSH 或应用“su -”命令来切换账号时都会应用 Login Shell。
Login shell 运行一系列的前置脚本来配置 shell 环境,运行如下命令可辨认是否是 login shell。
$ echo $0
如果执行命令的后果相似 “-bash” 或“-su”,那么你以后处于 login shell(确认有“-”前缀符号)
Login Shell 会执行如下的前置脚本:
- 执行文件 /etc/profile
- 执行 /etc/profile.d/ 目录下所有脚本
- 执行用户所属 ~/.bash_profile
- 执行 ~/.bashrc
- ~/.bashrc 执行文件 /etc/bashrc
Non Login Shell
Non Login Shell 是指通过 login shell 开启的 shell。例如,通过 shell 开启了一个新 shell 或者通过程序开启一个新 shell。
Non login shell 执行如下脚本来初始 shell 环境:
- 先执行 ~/.bashrc
- ~/.bashrc 会执行 /etc/bashrc
- /etc/bashrc 会调用 /etc/profile.d 中脚本
判断以后是 Login 还是 Non Login Shell
为了判断以后 shell 是 login 还是 nonlogin shell,能够简略的执行如下命令:
$ echo $0
Login shell 输入的后果相似 -bash 或 -su.
Non logins shell 输入的后果相似 bash 或 su
正文完