J'ai des serveurs Linux jumeaux qui devraient être configurés de manière identique, mais les commandes ssh vers l'un d'entre eux échouent pour les commandes qui nécessitent un chemin spécifié dans ~ / .bashrc. Par exemple, je peux utiliser une commande comme à la pwd
fois de manière interactive et via ssh, mais si j'essaie d'exécuter un programme situé dans un dossier bin d'application, il ne fonctionne que dans un shell interactif pour l'un des serveurs.
Le fichier / etc / profile et / etc / environment sur les deux serveurs sont identiques, cependant $ BASH_ENV est défini sur ~ / .bashrc sur le serveur qui fonctionne correctement. Je veux définir $ BASH_ENV sur le serveur qui ne fonctionne pas, mais je préférerais le définir au même emplacement que celui défini sur le serveur de travail. Quels sont les emplacements que Linux exécutera lors d'une connexion non interactive, comme une commande ssh à partir d'un autre ordinateur?
edit: La ligne dans / etc / passwd pour l'utilisateur spécifie / bin / bash sur les deux serveurs. Le fichier ~ / .bash_profile pour les deux serveurs est identique et contient if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
. La seule différence entre les systèmes est que $ BASH_ENV est une chaîne nulle sur le serveur qui ne fonctionne pas, et je ne trouve pas où elle a été définie sur le serveur qui fonctionne.
modifier 2: le fichier ~ / .ssh / environnement sur les deux serveurs a BASH_ENV = ~ / .bashrc
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi