我经常登录到服务器,然后 cd 进入特定目录。是否可以将这两个命令简化为一个?
ssh bob@foo
cd /home/guest
Run Code Online (Sandbox Code Playgroud)
如果可能,我想避免更改 'foo' 上的任何内容,因为我必须与服务器管理员一起清除它。我使用 bash,但我愿意接受其他 shell 中的答案。
小智 44
这适用于 OpenSSH:
ssh -t bob@foo 'cd /home/guest && exec bash -l'
Run Code Online (Sandbox Code Playgroud)
最后一个参数在您的登录 shell 中运行。-t
传递给ssh
强制ssh
分配伪终端的标志,这是交互式 shell 所必需的。-l
传递给的标志将bash
bash 作为登录 shell启动。
Dan*_*anB 25
只需将 ~bob/.bash_profile 文件的最后一行放在 foo 上:
cd /home/guest >& /dev/null
Run Code Online (Sandbox Code Playgroud)
现在每次登录(无论是通过 SSH 还是其他方式),都会运行 cd 命令。没有必要使用 ssh。
我知道您写道“如果可能的话,您希望避免更改 'foo' 上的任何内容”,但是如果 bob@foo 帐户是您的,那么更改您自己的 .bash_profile 应该是可以接受的,不是吗?
slm*_*slm 18
您也可以这样做,类似于@EvanTeitelman 的解决方案:
$ ssh -t bob@foo "cd /tmp ; bash"
Run Code Online (Sandbox Code Playgroud)
或者,如果您不知道另一端的外壳:
$ ssh -t bob@foo "cd /tmp && exec \$SHELL"
Run Code Online (Sandbox Code Playgroud)
或者像这样:
$ ssh -t bob@foo 'cd /tmp && exec $SHELL'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52094 次 |
最近记录: |