我使用的是 aix 7.1,我的 shell 是 bash
- 如果我这样做了
一切正常并ssh ibmunix gqlplus user/pass
gqlplus
开始。gqlplus
已开启/opt/freeware/bin
- 如果我从另一台机器上做
我收到错误消息ssh ibmunix "gqlplus user/pass"
gqlplus: command not found
- 如果我这样做了
效果很好。ssh -t ibmunix "source .bash_profile; gqlplus user/pass"
问题是:可以ssh
自动读取吗.bash_profile
?
答案1
我找到了首先在 sshd_config 用户环境上启用的解决方案
PermitUserEnvironment yes
然后编辑 $HOME/.ssh/environment 并输入 PATH 和你想要的任何内容
$HOME/.ssh/environment 文件不能包含变量和注释以外的内容,例如良好的环境文件内容
HOME=/home/user
PATH=$PATH:/opt/freeware/sbin:/bin:/opt/freeware/bin:/usr/bin:/sbin:/usr/sbin
不良环境文件内容
source $HOME/.profile
export PATH=$PATH:/usr/bin
权限还必须更正,否则无法工作,正确的权限为 .ssh 的 0700 和 .ssh/environment 的 0400
ls -lhd .ssh/
drwx------ 2 username username 4,0K nov 4 16:29 .ssh//
ls -lhd .ssh/environment
-r-------- 1 username username 73 nov 4 16:29 .ssh/environment
有效的证明。在 Linux 上,命令 sed_64 不存在,它存在于 Ibmaix 远程计算机上的 /opt/freeware/bin 目录中。
ssh linuxmachine sed_64
bash: sed_64: command not found
ssh remoteaix sed_64
Usage: sed_64 [OPTION]... {script-only-if-no-other-script} [input-file]...
-n, --quiet, --silent
suppress automatic printing of pattern space
-e script, --expression=script
.....
警告:使用 ssh 在 .bashrc 和 .bash_profile 之前读取 .ssh/environment,因此如果您没有输入正确的路径,您将找不到某些命令,即使在 .bash_profile、.bashrc 上设置了正确的路径
警告:此配置仅在家庭私人环境中安全,请勿在生产/严肃场所使用。因为 PermitUserEnvironment 选项允许任何用户绕过他们的登录 shell 和任何 ForcedCommand。