3
ssh <host>是登录shell,但是ssh <host> <command>不是吗?
我注意到,当我使用ssh <host> <command>语法直接在SSH主机上运行命令时,看到的.bashrc是.bash_profile(或.profile)的输出,但看不到。 例如,如果我将以下命令放在两个文件的顶部, echo ${BASH_SOURCE[0]} 和手动来源.bash_profile(.bashrc依次来源),我将看到 $ . .bash_profile .bash_profile .bashrc 如果使用ssh <host>命令的形式通过SSH远程登录到此计算机,则这与我看到的输出相同。(如果我.bash_profile暂时存放在其他地方,则这两行都不会被回显。) 但是,如果我直接在远程计算机上以的ssh <host> <command>形式执行命令ssh,则输出如下所示: $ ssh <host> echo foo /home/rlue/.bashrc foo 我的理解是.bash_profile和之间的区别.bashrc是,前者用于登录shell,而后者用于交互式非登录shell。 我得出以下结论: ssh <host>仅来源.bash_profile,而 ssh <host> <command>仅来源.bashrc,这意味着 前者是登录外壳,而后者不是。 这些结论正确吗?为什么将其ssh <host> <command>视为交互式非登录外壳?SSH是否仍然登录到远程计算机以执行命令?