关于shell和.profile,.bash_profile,.bashrc的一个问题

关于shell和.profile,.bash_profile,.bashrc的一个问题

我使用的是 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。

相关内容