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)
Byobu 是一个很好的例子,说明你永远不应该在.bashrc.
否则,它将在它的每一个“虚拟终端”中递归地运行自己;-)
不过你可以试试,挺好玩的。
这就是为什么你把它放进去.profile,所以 byobu(它实际上只是屏幕的包装器)只在登录时加载一次。而且 byobu 本身可以启动新的交互式 bash 会话。