Ich habe zwei Linux-Server, die identisch konfiguriert werden sollten, jedoch schlagen ssh-Befehle für einen von ihnen für Befehle fehl, für die ein in ~ / .bashrc angegebener Pfad erforderlich ist. Ich kann beispielsweise einen Befehl pwd
sowohl interaktiv als auch über ssh verwenden. Wenn ich jedoch versuche, ein Programm auszuführen, das sich in einem Anwendungsordner befindet, funktioniert dies nur in einer interaktiven Shell für einen der Server.
Die Dateien / etc / profile und / etc / environment auf beiden Servern sind identisch, jedoch ist $ BASH_ENV auf dem Server, der ordnungsgemäß funktioniert, auf ~ / .bashrc gesetzt. Ich möchte $ BASH_ENV auf dem Server einrichten, der nicht funktioniert, aber ich würde es vorziehen, ihn an derselben Stelle einzurichten, an der er auf dem Arbeitsserver eingerichtet ist. Was sind die Orte, an denen Linux zum Zeitpunkt einer nicht interaktiven Anmeldung ausgeführt wird, z. B. ein ssh-Befehl von einem anderen Computer?
edit: Die Zeile in / etc / passwd für den Benutzer gibt auf beiden Servern / bin / bash an. Die Datei ~ / .bash_profile für beide Server ist identisch und enthält if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
. Der einzige Unterschied zwischen den Systemen besteht darin, dass $ BASH_ENV eine Nullzeichenfolge auf dem Server ist, die nicht funktioniert, und ich kann nicht feststellen, wo sie auf dem Server festgelegt wurde, der funktioniert.
edit 2: Die Datei ~ / .ssh / environment auf beiden Servern hat BASH_ENV = ~ / .bashrc
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi