bashrc 还是 bash_profile?

Don*_*ner 49 startup bash scripts

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

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

.bash_profile(or .bash_loginor .profile) 由“登录”shell 执行。

有没有人有一些很好的例子来说明哪些东西更适合仅登录执行,这样我只会将它们放入.bash_profile,但它们实际上没有意义.bashrc

(我知道我们大多数源.bashrc.bash_profile,所以似乎并没有在相反的问题多一点...)

Ste*_*ski 25

由于 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
Run Code Online (Sandbox Code Playgroud)

此外,您通常不会从非交互式 shell 运行 ssh-agent。所以我在.bash_profile.

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 ~/.profile 而不是 ~/.bash_profile ,即使您更改外壳,事情仍然可以工作.. ~/.bash_profile 用于 bash 特定的东西。 (2认同)

Ral*_*alf 9

Byobu 是一个很好的例子,说明你永远不应该在.bashrc.

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

不过你可以试试,挺好玩的。

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