我希望获得$BASH_ENV
非交互式 ssh 命令的 var 源。
我确实看到了我的 BASH_ENV:
ssh server.example.com env | grep BASH
BASH_ENV=/tmp/set_bash_env_profile
如果我进行简单的 ssh 登录,env | wc -l
由于$BASH_ENV
env var,我得到 85,但是如果:
ssh server.example.com env | wc -l
17
我才17...
我ForceCommand
按照描述在 sshd_config 中尝试过这里但就我而言,SSH_ORIGINAL_COMMAND
尚未设置。
答案1
大概你正在设置BASH_ENV
你的.bashrc
. Bash.bashrc
在交互时加载,而不是登录 shell,或者当它是由 rshd 或(在许多发行版中,但它是编译时选项)sshd 调用的登录 shell 时。已经太晚了这bash 的实例。直接把命令放到~/.bashrc
.
# .bashrc
if [[ $- = *i* ]]; then
# Commands for interactive use: prompt, aliases, key bindings, etc.
# Don't set environment variables here, that goes in .profile.
else
# Commands executed only on remote logins.
# You can set environment variables here. Do not output anything.
fi
如果您只需要设置环境变量,~/.pam_environment
则可以使用它,它用于任何类型的登录。看设置环境变量的最佳发行版/与 shell 无关的方法是什么?
有关通过 SSH 非交互登录时执行命令的其他方法,请参阅通过 ssh 的 sh 启动文件