关于shell:Login-和-NonLogin-Shell-的区别译

28次阅读

共计 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 输入的后果相似 bashsu

正文完
 0