登录Shell和非登录Shell的区别是什么

时间:2019-04-29 03:17:51  来源:igfitidea点击:

shell是Linux体系结构的一个重要层。
Shell是一个接口,它接受用户的输入并向内核发送指令,也接受内核的输出并将结果发送回输出Shell。
在本教程中,我们使用Bash shell作为示例。
shell基本上有两种类型, 登录shell非登录shell
每个shell运行一些预定义的脚本来配置shell环境。

登录Shell

在用户成功登录后创建一个登录shell。
例如,当我们通过终端登录Linux系统时,使用SSH或使用“su”命令切换到用户。
当登录shell启动时,它运行一组预定义的脚本来配置shell环境。
要查看登录shell,请在终端上运行以下命令。

echo 
echo ##代码##

如果我们得到类似“-bash”或“-su”的结果,那么我们正在登录shell。
确保它有连字符(-)作为前缀。

一个 登录Shell执行以下脚本:

  1. 登录shell执行 /etc/profile
  2. /etc/profile执行 /etc/profile.d中的所有脚本
  3. 然后执行用户的 ~/.bash_profile
  4. ~/.bash_profile执行用户目录下的 ~/.bashrc
  5. ~/.bashrc执行 /etc/bashrc

非登录Shell

非登录Shell是由登录Shell启动的Shell。
例如,你从另一个shell或由一个程序启动的shell。
非登录shell执行以下脚本来设置shell环境。

  1. 非登录shell首先执行 ~/.bashrc
  2. 然后 ~/.bashrc执行 /etc/bashrc
  3. /etc/bashrc调用 /etc/profile.d中的脚本

检查登录和非登录Shell

要查找当前shell是登录shell还是非登录shell,只需运行以下命令。
看看结果,找出它们之间的不同。

##代码##

登录shell输出将是 -bash-su
非登录shell输出将为 bashsu