bashrc还是bash_profile?

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

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

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

有没有人有一些很好的例子来说明什么东西更适合登录执行,这样我只会把它们放在.bash_profile中,但它们在.bashrc中真的没有用?

(我知道我们大多数人都使用.bash_profile来源.bashrc,所以在相反的问题中似乎没有太多意义……)

由于.bashrc用于非登录shell,因此我避免使用任何回显到屏幕的命令。 我也遇到过.bashrc中的echo语句会导致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 

Byobu是你永远不应该放在.bashrc中的一个很好的例子。

否则,它会在每个“虚拟终端”中以递归方式运行;-)你可以尝试一下,这很有趣。

这就是为什么你把它放在.profile中,所以byobu(它实际上只是一个屏幕上的包装)只在登录时加载一次。 而byobu本身可以启动新的交互式bash会话。