登录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,请在终端上运行以下命令。
echoecho ##代码##
如果我们得到类似“-bash”或“-su”的结果,那么我们正在登录shell。
确保它有连字符(-)作为前缀。
一个 登录Shell执行以下脚本:
- 登录shell执行 /etc/profile
- /etc/profile执行 /etc/profile.d中的所有脚本
- 然后执行用户的 ~/.bash_profile
- ~/.bash_profile执行用户目录下的 ~/.bashrc
- ~/.bashrc执行 /etc/bashrc
非登录Shell
非登录Shell是由登录Shell启动的Shell。
例如,你从另一个shell或由一个程序启动的shell。
非登录shell执行以下脚本来设置shell环境。
- 非登录shell首先执行 ~/.bashrc
- 然后 ~/.bashrc执行 /etc/bashrc
- /etc/bashrc调用 /etc/profile.d中的脚本
检查登录和非登录Shell
要查找当前shell是登录shell还是非登录shell,只需运行以下命令。
看看结果,找出它们之间的不同。
登录shell输出将是 -bash或 -su。
非登录shell输出将为 bash或 su