因此,对于我的脚本,我希望ssh进入远程主机并在脚本结束后保留在远程主机中,并且在脚本结束时更改目录以匹配远程主机。
#!/bin/ksh
ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; echo $PWD; ssh -q -X ssh mylogin@myremotemachine; cd $HOME/bin/folder2; echo $PWD'
在第二个ssh之前,PWD会被正确更改。第二个ssh的原因是因为它在正确的远程主机中结束了脚本,但是它不会保留我在其后面放置命令所尝试的目录更改但是它们不会执行。
有没有人有任何想法?
答案 0 :(得分:1)
只需在命令列表的末尾启动一个shell:
ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; echo $PWD; ssh -q -X ssh mylogin@myremotemachine; cd $HOME/bin/folder2; echo $PWD; ksh'
如果您希望shell是登录的(即.profile
),请使用exec -l
:
ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; exec -l ksh'
如果远程服务器使用的旧ksh
版本不支持exec -l
内置版,并且bash
或ksh93
可用,则此处为解决方法:
ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; exec bash -c "exec -l ksh"'