linux – $BASH_ENV通常设置在哪里?

我有两个 Linux服务器应该配置相同,但是对于需要在〜/ .bashrc中指定的路径的命令,其中一个命令的ssh命令失败.例如,我可以通过交互方式和通过ssh使用像pwd这样的命令,但是如果我尝试运行位于应用程序bin文件夹中的程序,它只能在其中一个服务器的交互式shell中运行.

两台服务器上的/ 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

解决方法

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),但是在该页面中,该步骤不符合上述顺序.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...