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

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

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

编辑:这是一个社区维基,所以也许你可以提供一些例子来说明什么情况下需要哪种类型的 $SHELL,而不是投票关闭

启动脚本

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

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

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

当启动非登录 shell 的交互式 shell 时,如果 ~/.bashrc 文件存在,Bash 会从该文件读取并执行命令。可以使用 --norc 选项禁止此操作。--rcfile 文件选项将强制 Bash 从文件而不是 ~/.bashrc 读取并执行命令。

答案1

在登录 shell 的配置文件中,您可以设置一些在会话期间要使用的内容,这些内容只需执行一次。以下是一些想法:

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

.bashrc您应该在非登录 shell 的文件中 ( ) 配置您的 shell:

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

通常,您会使用以下内容包含.bashrcfrom 。然后登录 shell 会获取所有自定义内容,并且文件不必重复 中已有的内容。.bash_profile.bash_profile.bashrc

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

相关内容