no login shell和login shell

  no login shell和login shell在启动和退出时会执行不同的脚本文件从而影响shell中的环境变量,本文根据bash的文档描述了两种shell启动时自动执行的脚本文件的区别。

什么是nologin shell和login shell?

按照bash文档的说法,login shell是第0个参数以-开头或者有一个参数为--login的shell。

A login shell is one whose first character of argument zero is a -, or one started with the --login option.

根据该定义,我们可以使用bash --login启动一个login shell或者通过echo $0的输出结果是否以-开头来判断一个shell是否为login shell。

经过我的测试,通过图形界面启动的终端为no login shell, 而通过ssh远程连接得到的shell为login shell。

为什么要关注是login shell还是no login shell?

区分login shell和no login shell的主要原因是它们启动和退出时自动执行的脚本不同。

login shell

对于login shell其启动时自动执行的脚本文件顺序如下

首先执行/etc/profile
再执行~/.bash_profile, ~/.bash_login, ~/.profile中第一个存在的脚本(按顺序搜索,只会执行其中一个)

如果shell启动时添加了--noprofile选项则不会执行上述文件。在login shell退出时,会执行~/.bash_logout

no login shell

对于no login shell,启动时会执行/etc/bash.bashrc~/.bashrc,如果shell启动时添加了--norc选项则不会执行上述文件,如果添加了--rcfile <filename>选项则会执行指定的filename文件,也不会执行上述文件。no login shell退出时不会自动执行脚本文件。

总结

login shell和no login shell启动时执行的脚本文件是完全不同的,因此,运行环境初始化脚本需要合理配置才能让login shell和no login shell都能执行,同时也可以为login shell和no login shell配置不同的运行环境初始化脚本。

参考资料

Linux man page(bash)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值