我知道两个bash登录脚本之间的区别:
.bashrc
仅由“非登录” shell运行。
.bash_profile
(或.bash_login
或.profile
)由“登录” shell执行。
有没有人有一些很好的例子说明哪些事情更适合仅登录执行,例如我只将它们放在.bash_profile
中,但在.bashrc
中却没有任何意义?
(我知道我们大多数人都从.bashrc
中获取.bash_profile
,所以在相反的问题中似乎没什么意义...)
由于.bashrc
用于非登录外壳程序,因此我避免使用任何回显到屏幕的命令。我也遇到过一些经验,其中.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会话。