根据man sshd
:
LOGIN PROCESS
When a user successfully logs in, sshd does the following:
<...>
9. Runs user's shell or command. All commands are run under the
user's login shell as specified in the system password data‐
base.
不过,尚不清楚“在用户的登录 shell 下运行”的字面意思是“登录 shell,如bash -l
”?我的实验表明,不,它不是:
$ ssh u@h shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'
Not login shell
我不明白为什么会这样?它导致正在运行的命令无法像登录 shell 那样获得通常的环境。这很麻烦。