Warum aktualisiert sich mein Pfad nicht * jetzt *?

1726
bobby

Ich habe vor kurzem das neueste Qt-SDK installiert und es in meinem PATH in mein ~ / .bash_profile eingefügt.

Ich sehe die Veränderung nicht. Ich kann, source ~/.bash_profileaber dann ist mein Pfad doppelt so lang, aber ich kann nicht einfach ein neues Gnome-Terminal öffnen und den Pfad aktualisieren lassen.

Warum?

Anmerkungen: Fedora 11, auf dem GNU bash, Version 4.0.16 (1) ausgeführt wird, wird im Standard-Gnome-Desktop freigegeben.

.bash_profile pfad config:

# User specific environment and startup programs  PATH=$PATH:$HOME/bin:/opt/qtsdk-2009.03/qt/bin/:/usr/local/lib/ 
1

2 Antworten auf die Frage

8
heavyd

Wenn Sie einfach ein Terminal von Ihrem Desktop aus öffnen, übernimmt das Terminal die Umgebung, in der es gestartet wurde, einschließlich des Pfads. Wenn Sie ein Terminal öffnen, geschieht Folgendes gemäß der Bash-Dokumentation:

Aus dem Bash-Referenzhandbuch

Wenn Bash als interaktive Login-Shell oder als nicht interaktive Shell mit der Option --login aufgerufen wird, werden zuerst Befehle aus der Datei / etc / profile gelesen und ausgeführt, sofern diese Datei vorhanden ist. Nach dem Lesen dieser Datei sucht sie in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile und liest und führt Befehle aus dem ersten vorhandenen Befehl aus, der lesbar ist. Die Option --noprofile kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu verhindern.

Wenn eine Login-Shell beendet wird, liest und führt Bash Befehle aus der Datei ~ / .bash_logout aus, sofern vorhanden.

Und...

Wenn eine interaktive Shell gestartet wird, die keine Login-Shell ist, liest und führt Bash Befehle aus ~ / .bashrc aus, sofern diese Datei vorhanden ist. Dies kann mit der Option --norc verhindert werden. Die Dateioption --rcfile zwingt Bash, Befehle aus der Datei anstelle von ~ / .bashrc zu lesen und auszuführen.

In der Regel enthält Ihr ~ / .bash_profile die Zeile

 if [ -f ~/.bashrc ]; then . ~/.bashrc; fi 

nach (oder vor) eventuellen Login-spezifischen Initialisierungen.

Damit Ihr .bash_profile ausgeführt werden kann, müssen Sie sich an einer Login-Shell anmelden, indem Sie entweder den localhost verwenden oder sich von Ihrer Desktop-Umgebung abmelden und sich wieder anmelden.

Ich bin gerade auf die Manpage gestoßen. Du warst schneller als ich! Danke für deine Hilfe bobby vor 14 Jahren 0
1
Dennis Williamson

Versuchen Sie, das ~/.bashrcstattdessen in Ihre aufzunehmen .

Wenn Sie sich anmelden, ~/.bash_profilewird verarbeitet. Es wird nicht erneut verarbeitet, wenn Sie ein neues Terminal öffnen oder eine neue Shell starten, die dann ~/.bashrcbearbeitet wird. Sie sollten ~/.bashrcin Ihrem ~/.bash_profile.

Siehe den Abschnitt "Aufruf" in man bash.