Überprüfen Sie im Terminal (xterm, aterm usw.), wie die Shell aufgerufen wurde: Eine Login-Shell zeigt "-bash" und eine Nicht-Login-Shell zeigt beim Aufruf "Bash" an echo $0
.
$ echo $0 -bash $ bash $ echo $0 bash
Eine Login-Bash-Shell liest der Reihe nach Folgendes:
- / etc / profile
- ~ / .bash_profile
- ~ / .bash_login
- ~ / .profile
Prüfen Sie, ob eine dieser Dateien vorhanden ist und ob sie die Variable zurücksetzen. Sie müssen auch den Dateien folgen, die diese Dateien enthalten.
Wenn bash nicht als Login-Shell aufgerufen wird, werden die folgenden Dateien immer noch gelesen, wenn festgestellt wird, dass es sich um eine interaktive Shell handelt.
- /etc/bash.bashrc
- ~ / .bashrc
Eine einfache Methode zum Bestimmen der Art der Bash-Shell ist das Definieren von .bash_profile und .bashrc sowie das Echo "Login-Shell" bzw. "Interactive-Shell".
Sobald Sie wissen, welche Art von Shell aufgerufen wird, haben Sie die Möglichkeit, Ihr Skript der Datei .bashrc oder .bash_profile in Ihrem Ausgangsverzeichnis hinzuzufügen. Alternativ können Sie das Zurücksetzen von LD_LIBRARY_PATH deaktivieren.
Wenn Ihr .bashrc oder .bash_profile durch einen Wächter ähnlich dem unten stehenden geschützt wird, müssen Sie möglicherweise Ihr Skript außerhalb aufrufen:
if [ "X$BASH_SOURCED" != "XYES" ]; then export BASH_SOURCED=YES fi
Solche Wachen werden normalerweise so platziert, dass verhindert wird, dass ein Skript mehrmals in einer Sitzung verwendet wird.
Bearbeiten: Wenn sich herausstellt, ob Tedius ermittelt, wo die Variable zurückgesetzt wird, und Sie beispielsweise Zugriff auf / etc / profile oder /etc/bash.bashrc haben, können Sie "set -x" am oberen Rand des Befehls vorübergehend hinzufügen Skript, um alle Befehle anzuzeigen, die ausgeführt werden. Die Ausgabe wird ziemlich ausführlich sein, also führen Sie zuerst ein "set -x" in Ihrer Shell aus und führen Sie einige Befehle aus, damit Sie wissen, was Sie erwartet.