.bashrc 还是 bash_profile?

.bashrc 还是 bash_profile?

我知道两个 bash 登录脚本之间的区别:

.bashrc仅由“非登录”shell 运行。

.bash_profile(或.bash_login.profile)由“登录”shell 执行。

是否有人可以举一些好的例子来说明哪些东西更适合仅登录执行,以至于我只会把它们放在里面.bash_profile,但它们在里面实际上没有意义.bashrc

(我知道我们大多数人的资料.bashrc都来自.bash_profile,因此相反的问题似乎没有多大意义……)

答案1

由于 a.bashrc适用于非登录 shell,因此我避免使用任何会回显到屏幕的命令。我还遇到过这样的情况:echo 语句.bashrc会导致 sftp 和 rsync 命令失败(可能还有 scp 命令)。

# Print some information as we log in
# -s: OS Name -n: Node name -r: OS Release
uname -snr
uptime

另外,您通常不会从非交互式 shell 运行 ssh-agent。因此我将其放在 中.bash_profile

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi

答案2

Byobu 是一个很好的例子,说明您永远不应该将其放入其中.bashrc

否则,它将在其每一个“虚拟终端”中递归运行自身;-)

你可以尝试一下,这很有趣。

这就是将它放入的原因.profile,这样 byobu(实际上只是 screen 的包装器)在登录时只会加载一次。而 byobu 本身可以启动新的交互式 bash 会话。

相关内容