![当命令返回非 0 的退出状态时,SSH 连接自动关闭](https://linux22.com/image/710228/%E5%BD%93%E5%91%BD%E4%BB%A4%E8%BF%94%E5%9B%9E%E9%9D%9E%200%20%E7%9A%84%E9%80%80%E5%87%BA%E7%8A%B6%E6%80%81%E6%97%B6%EF%BC%8CSSH%20%E8%BF%9E%E6%8E%A5%E8%87%AA%E5%8A%A8%E5%85%B3%E9%97%AD.png)
当我在 VPS 服务器上执行命令(例如:grep、cat 等)并返回非 0 的退出状态时,我的 SSH 连接会自动关闭。我不知道这个问题可能与什么有关...
您是否已经遇到过此类问题?有什么建议吗?
现就此问题进行说明:
1)我从我的电脑连接到我的 VPS 服务器:sylvain@mycompute
sylvain@mycomputer:~$ ssh myuser@vps-server
Last login: Sat Sep 9 17:02:30 2017 from 11.22.33.44
myuser@vps-server:~$
2)我创建一个脚本,从第一个参数获取退出状态:
myuser@vps-server:~$ chmod u+x /tmp/test-exit-status.sh
myuser@vps-server:~$ cat /tmp/test-exit-status.sh
#!/bin/bash
echo "Exit status will be '$1'."
exit $1
3)退出状态为 0,SSH 连接保持:
myuser@vps-server:~$ /tmp/test-exit-status.sh 0
Exit status will be '0'.
myuser@vps-server:~$
4)退出状态不为 0(例如 56),SSH 连接会自动关闭,并且在我的计算机上,SSH 命令的退出状态是脚本的退出状态:
myuser@vps-server:~$ /tmp/test-exit-status.sh 56
Exit status will be '56'.
Connection to vps-server closed.
sylvain@mycomputer:~$ echo $?
56
答案1
听起来好像set -e
你~/.bashrc
尝试执行set +e
并重新运行测试,看看它是否再次执行同样的事情。
我会考虑明确添加set +e
(或删除set -e
)以~/.bashrc
永久修复它。