我需要在远程 Ubuntu 上创建一些别名并在 ssh 连接上启用它们。所以我在 ~/.bashrc 文件(在远程 Ubuntu 上)中定义了别名。
现在当我这样做时
ssh root@<Remote IP>
source ~/.bashrc
我可以使用这些别名...但source ~/.bashrc
我也想自动化,而不是每次都手动执行。所以我尝试了
sshpass -p 'none' ssh -o StrictHostKeyChecking=no root@<Remote IP> -t 'source ~/.bashrc'
...但连接已关闭
如果我做
sshpass -p none ssh -o StrictHostKeyChecking=no root@<Remote IP> -t 'ssh root@<Remote IP>; source ~/.bashrc'
那么它没有断开连接,但无法输入命令 - 输入时终端没有反应
那么如何连接到远程主机并在同一个命令中加载 ~/.bashrc 呢?
当你这样做时
ssh root@<Remote IP>
,你将获得root的登录shell,它(假设是bash)将加载/root/.profile(或/root/.bash_profile,如果存在)。因此,最干净的解决方案可能是确保该文件源自 .bashrc 文件(为 root 的登录 shell 提供与其非登录交互式 shell 相同的环境)。
默认的 Ubuntu
~/.profile
(从 复制/etc/skel/
)会自动执行此操作: