当我在 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
永久修复它。