两台服务器上的/ etc / profile和/ etc / environment文件是相同的,但是在正常工作的服务器上将$BASH_ENV设置为〜/ .bashrc.我想在无效的服务器上设置$BASH_ENV,但我更喜欢将它设置在与工作服务器中设置的位置相同的位置. Linux在非交互式登录时运行的位置有哪些,例如来自另一台计算机的ssh命令?
编辑:
用户/ etc / passwd中的行指定两台服务器上的/ bin / bash.两个服务器的〜/ .bash_profile文件是相同的,包含if [-f~ / .bashrc];然后 .的〜/ .bashrc;网络连接.系统之间的唯一区别是$BASH_ENV是服务器上的空字符串,它不起作用,我找不到它在服务器中设置的位置.
编辑2:
两台服务器上的〜/ .ssh / environment文件都有BASH_ENV =〜/ .bashrc
解决方法
首先要看的是调用子shell的环境.
>将传递导出的BASH_ENV变量.请记住,这可能会隐藏在源文件中.
>它可以作为参数在调用脚本的同一行中输入,即BASH_ENV = blah /path/to/somecommand.sh.这就像一个疼痛的拇指,所以你可能会抓住它.
如果在您登录后设置但是无法确定在哪里,则可能需要查看构建登录环境的内容.
>所有通过登录shell获取的常用文件.男人bash为详尽的清单.
> PAM:正如评论中建议的那样,请检查/etc/security/pam_env.conf以及pam_env.so引用的所有其他文件.其他PAM模块也可以负责,但如果您的PAM配置看起来相同,则可能不是这种情况.
> sshd:它将按顺序扫描以下文件:
>〜/ .ssh / environment(在更改为主目录之前;仅当在sshd_config中启用了PermitUserEnvironment时)
>〜/ .ssh / rc(更改为主目录后;始终)
> / etc / ssh / sshrc(如果〜/ .ssh / rc不存在)
注意:sshd还将在用户的授权密钥文件中扫描环境=值行(如果启用了PermitUserEnvironment),但是在该页面中,该步骤不符合上述顺序.