“登录”和“交互” bash shell有什么区别


50

“登录”和“交互” bash shell有什么区别?我在下面引用了维基百科,但是有人可以给出更好的答案吗?

编辑:这是一个社区Wiki,所以也许不愿投票关闭就可以提供有关哪种情况需要哪种类型的$ SHELL的示例

启动脚本

当Bash启动时,它将以各种不同的脚本执行命令。

当Bash作为交互式登录shell调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。读取该文件后,它将按该顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在的且可读的第一个命令中读取并执行命令。

登录外壳退出时,Bash从〜/ .bash_logout文件(如果存在)中读取并执行命令。

启动不是登录外壳程序的交互式外壳程序时,如果该文件存在,则Bash从〜/ .bashrc读取并执行命令。使用--norc选项可以禁止这种情况。--rcfile file选项将强制Bash从文件而不是〜/ .bashrc中读取并执行命令。


我已对问题进行了编辑,以使其更符合半加油站规则。我想我永远也不会理解删除有用信息的愿望……
Gareth

7
人们为什么不赞成这个问题?对我来说似乎合法吗?
duffbeer703 2009年

2
gh,从问题中取出答案,然后将其发布为答案。可以回答您自己的问题。
德罗伯特

2
这是一个非常有效的问题,因为区别令人困惑。例如,请注意,当您通过xdm登录到图形环境并运行xterm时,会得到一个交互式外壳程序,并且登录外壳程序启动文件未运行。
pjc50 2011年

Answers:


16

在登录shell的配置文件中,您可以设置一些在会话期间将要使用的东西,而这些东西只需要做一次。一些想法:

  • 创建一个包含您连接的IP地址的临时文件,以后可以将其包含在一些设置防火墙规则的脚本中。
  • 运行ssh-agent,询问您的SSH密钥,并将SSH代理环境变量存储在文件中。
  • 如果那是一台有限的机器,并且您的同事希望了解彼此的登录名,请编写(1)消息以告知他们您的登录名。

在非登录外壳程序的文件(.bashrc)中,您应该配置外壳程序:

  • 花式提示
  • 设置别名
  • 设置历史记录选项
  • 定义自定义外壳函数
  • 导出环境变量(如果系统范围的设置很糟糕,则可能是PAGER,EDITOR)
  • 加载保存在ssh-agent变量中 .bash_profile

通常情况下,你会包括.bashrc来自.bash_profile下列要求:然后,登录外壳程序将获得所有自定义设置,并且.bash_profile文件不必重复已存在的内容.bashrc

[[ -f ~/.bashrc ]] && . ~/.bashrc

3
登录外壳程序是您刚在计算机上启动时启动的第一个外壳程序吗?之后打开的所有其他外壳可能是交互式的,也可能不是交互式的。从cron运行的shell?似乎不是交互式的,但是否登录?如果您不在机器上怎么办?这些都是没有回答的问题
弗朗索瓦博索莱伊

4
现在,这是一个答案,我可以理解:linuxquestions.org/questions/linux-general-1/...
弗朗索瓦博索莱伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.