如何通过 SSH 进入特定目录?

如何通过 SSH 进入特定目录?

我经常登录到服务器,然后 cd 进入特定目录。是否可以将这两个命令简化为一个?

ssh bob@foo  
cd /home/guest

如果可能的话,我想避免更改“foo”上的任何内容,因为我必须与服务器管理员一起清除它。我使用 bash,但我愿意接受其他 shell 中的答案。

答案1

这适用于 OpenSSH:

ssh -t bob@foo 'cd /home/guest && exec bash -l'

最后一个参数在您的登录 shell 中运行。-t传递给ssh强制ssh分配伪终端的标志,这对于交互式 shell 是必需的。-l传递给bash 的标志bash作为登录外壳

答案2

只需将 foo 上的 ~bob/.bash_profile 文件的最后一行放在:

cd /home/guest >& /dev/null

现在,每次您登录(无论是通过 SSH 还是其他方式)时,都会运行 cd 命令。不需要用 ssh 搞乱。

我知道您写道,您“希望尽可能避免更改 'foo' 上的任何内容”,但如果 bob@foo 帐户是您的,则更改您自己的 .bash_profile 应该是可以接受的,不是吗?

答案3

您也可以这样做,类似于@EvanTeitelman的解决方案:

$ ssh -t bob@foo "cd /tmp ; bash"

或者,如果您不知道另一端的外壳:

$ ssh -t bob@foo "cd /tmp && exec \$SHELL"

或者像这样:

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'

相关内容