“登录”和“交互式” 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
通常,您会使用以下内容包含.bashrc
from 。然后登录 shell 会获取所有自定义内容,并且文件不必重复 中已有的内容。.bash_profile
.bash_profile
.bashrc
[[ -f ~/.bashrc ]] && . ~/.bashrc