假设 bash 脚本 X 正在另一个 bash 脚本 Y 中调用。如果我直接在本地计算机上执行脚本 X,则 X 完成后,程序将退出到终端。
但是,当我通过 SSH 远程执行脚本 Y 时,(远程)终端在 X 完成后“挂起”,并且即使 Xexit
最后包含命令也不会退出。
如何使脚本 Y 在完成随附的脚本调用后退出,或在通过 SSH 执行时继续执行下一个命令?
//scriptY.sh
#!/bin/bash
...
ssh -i $ssh_key $user@$host source $dir/scriptX.sh
//scriptX completes fine on SSHed machine, but remote machine hangs here
...
编辑:
另一个细节,可能会有所帮助。里面更深处有这被调用的脚本,其中包含exec
命令。
答案1
这可能意味着您的脚本在后台运行某些内容(带有 &),使 tge 终端保持打开状态。当你的脚本结束时,某些东西会继续运行。 ssh 检测到这一点,并且不会关闭会话,直到某些东西退出。
为了帮助您让脚本执行您想要的操作,您需要发布脚本。