it-swarm.cn

是bashrc还是bash_profile?

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

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

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

有没有人有一些很好的例子说明哪些事情更适合仅登录执行,例如我只将它们放在.bash_profile中,但在.bashrc中却没有任何意义?

(我知道我们大多数人都从.bashrc中获取.bash_profile,所以在相反的问题中似乎没什么意义...)

49
Don Faulkner

由于.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
24
Stefan Lasiewski

Byobu是您永远不要放在.bashrc中的一个很好的例子。

否则,它将在其“虚拟终端”的每个单独终端中递归运行;-)

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

这就是为什么将它放在.profile中的原因,因此byobu(实际上只是屏幕周围的包装)在登录时仅加载一次。并且byobu本身可以启动新的交互式bash会话。

8
Ralf