BASH_ENV仅通过环境或初始化期间获取的其他脚本进行设置.对于非交互式shell,如果该shell也是登录shell,它将仅尝试获取其他文件. (在这种情况下,它会读取〜/ .bash_profile,〜/ .bash_login和〜/ .profile ……但如果它这样做,你就不会遇到问题)
首先要看的是调用子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),但是在该页面中,该步骤不符合上述顺序.