Wie füge ich ein Verzeichnis $PATH
in Ubuntu hinzu und mache die Änderungen dauerhaft?
Wie füge ich ein Verzeichnis $PATH
in Ubuntu hinzu und mache die Änderungen dauerhaft?
Antworten:
Ein eingegebener Pfad .bash_profile
wird nur in einer Bash-Anmeldeshell ( bash -l
) festgelegt. Wenn Sie Ihren Pfad .profile
eingeben, steht er Ihrer gesamten Desktopsitzung zur Verfügung. Das bedeutet, dass selbst Metacity es verwenden wird.
Zum Beispiel ~/.profile
:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
Übrigens können Sie die PATH-Variable eines Prozesses überprüfen, indem Sie sich seine Umgebung in /proc/[pid]/environ
ansehen (ersetzen Sie [pid] durch die Zahl von ps axf
). ZB verwendengrep -z "^PATH" /proc/[pid]/environ
bash
Als Login-Shell wird nicht analysiert, .profile
ob eine existiert .bash_profile
oder nicht .bash_login
. Von man bash
:
Es sucht in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile und liest und führt Befehle von dem ersten aus, der vorhanden und lesbar ist.
In den nachstehenden Antworten finden Sie Informationen zu .pam_environment
oder .bashrc
interaktive Shells ohne Anmeldung. Sie können den Wert auch global für alle Benutzer festlegen, indem Sie ein Skript in die Sitzung von Display Manager einfügen /etc/profile.d/
oder dieses verwenden /etc/X11/Xsession.d/
, um die Sitzung von Display Manager zu beeinflussen.
PATH="$HOME/bin:$PATH"
hinzufügen ... Also füge ich es hinzu?
Bearbeiten Sie .bashrc
in Ihrem Ausgangsverzeichnis und fügen Sie die folgende Zeile hinzu:
export PATH="/path/to/dir:$PATH"
Sie müssen Ihre .bashrc
oder Logout / Login-Adresse eingeben (oder das Terminal neu starten), damit die Änderungen wirksam werden. Um Ihre Quelle zu finden, geben Sie .bashrc
einfach ein
$ source ~/.bashrc
.bashrc
" Sie Ihre ? Wie "starte ich das Terminal neu"?
.bashrc
ist nicht der richtige Ort zum Festlegen von Umgebungsvariablen. Sie sollten hineingehen .profile
oder .pam_environment
. Siehe mywiki.wooledge.org/DotFiles
. .bashrc
nicht .bashrc
:) oder source .bashrc
für diese Angelegenheit
Der empfohlene Ort, um permanente, systemweite Umgebungsvariablen zu definieren, die für alle Benutzer gelten, ist:
/etc/environment
(Hier wird der Standard PATH
definiert)
Dies funktioniert in Desktop oder Konsole, Gnome-Terminal oder TTY, Regen oder Sonnenschein;)
Drücken Sie zum Bearbeiten Alt+ F2und geben Sie Folgendes ein:
gksudo gedit /etc/environment
(oder öffnen Sie die Datei sudo
in Ihrem bevorzugten Texteditor)
Führen Sie den Befehl aus, um Änderungen vorzunehmen . /etc/environment
. Da diese Datei nur ein einfaches Skript ist, wird sie ausgeführt und der PATH
Umgebungsvariablen der neue Pfad zugewiesen . Um zu überprüfen, führen Sie env aus und sehen Sie den PATH
Wert in der Auflistung.
Verbunden:
source /etc/environment
, um die Änderungen neu zu laden
Ich denke, der kanonische Weg in Ubuntu ist:
erstelle eine neue Datei unter /etc/profile.d/
sudo vi /etc/profile.d/SCRIPT_NAME.sh
dort hinzufügen:
export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
und gib ihm Ausführungserlaubnis
sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
Für komplette Neulinge (wie ich), die sich mit GUI besser auskennen:
$HOME
Ordner..profile
Sie mit der rechten Maustaste auf und dann auf Mit Texteditor öffnen .PATH="$PATH:/my/path/foo"
..profile
).$PATH:
Bit hinzufügen, das die vorhandene PATH-Definition enthält
Für persistente Umgebungsvariablen, die nur bestimmten Benutzern zur Verfügung stehen. Ich kann die offizielle Ubuntu-Dokumentation nur empfehlen.
https://help.ubuntu.com/community/EnvironmentVariables
Unter Bezugnahme auf die obige Dokumentation habe ich meine Android SDK-Pfadtools folgendermaßen eingerichtet :
~/.pam_environment
Datei im Home-Verzeichnis erstellen .PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
.Fügen Sie diese Zeile in Ihre ~/.bashrc
Datei ein.
Es wird bezogen, wenn Sie ein Terminal öffnen
EDIT : Basierend auf die Kommentare unten, für eine allgemeinere Einstellung, die für alle Schalen gelten (einschließlich wenn du getroffen werden Alt- F2in Unity), fügen Sie die Zeile in der ~/.profile
Datei. PATH
Sollte jedoch wahrscheinlich nicht beides tun, da der Pfad Ihrer Umgebung zweimal hinzugefügt wird, wenn Sie ein Terminal öffnen.
$HOME/.profile
für persönliche Einstellungen oder /etc/profile
für alle Benutzer fest. Aber wenn es nur für die Bash benötigt wird, wird wohl beides funktionieren.
~/.bashrc
, ist es nur in den von Ihnen geöffneten Terminals verfügbar. Wenn Sie beispielsweise Alt + F2 drücken und versuchen, einen Befehl in diesem Verzeichnis auszuführen, wird er nicht gefunden. Wenn Sie es in ~/.profile
oder setzen ~/.pam_environment
, wird es von der Gnomensitzung (oder von der DE, die Sie verwenden) geerbt. Das Anhängen von PATH in ~/.bashrc
hat auch den Nachteil, dass, wenn Sie / exec bash interaktiv von einer anderen interaktiven bash-Shell aus öffnen, es mehrmals angehängt wird.
~/.profile
jedoch, dass es für persönliche Wege richtig ist; Dort fügt Ubuntu das ~/bin
Verzeichnis hinzu. Und ich gebe zu, dass ich die Anzahl der Wege ein wenig übertrieben habe - nur ein bisschen.
~/.profile
in diesem Fall mitgehen .
Fügen Sie die Zeile export PATH=/path/you're/adding:$PATH
an das Ende von an, um sie systemweit festzulegen /etc/profile
.
Um das Verzeichnis nur für den angemeldeten Benutzer hinzuzufügen, fügen Sie dieselbe Zeile an ~/.bash_profile
.
Das Hinzufügen zu .bashrc wird funktionieren, aber ich denke, die traditionellere Methode zum Einrichten Ihrer Pfadvariablen befindet sich in .bash_profile, indem die folgenden Zeilen hinzugefügt werden.
PATH=$PATH:/my/path/foo
export PATH
Laut diesem Thread sieht es so aus, als ob Ubuntus Verhalten sich geringfügig von dem von RedHat und Klonen unterscheidet.
.bashrc
, stecken Sie es .bashrc
stattdessen. GUI-Terminals in Ubuntu sind keine Login-Shells und werden daher .bash_profile
nicht ausgeführt.
.bash_profile
. Wenn bash kein findet .bash_profile
(wenn Sie sich interaktiv anmelden), sucht .profile
und verwendet es das stattdessen. Standardmäßig haben Sie ein .profile
und .bashrc
in Ubuntu. Und .profile
ist der richtige Ort, um Umgebungsvariablen zu setzen, wenn wir pam_env nicht berücksichtigen.
Im Terminal cd
zuthe_directory_you_want_to_add_in_the_path
echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc
Das war nicht meine Idee. Ich habe diesen Weg gefunden, um den Pfad in diesem Blog hier zu exportieren .
sudo vi /etc/profile.d/SCRIPT_NAME.sh
dort hinzufügen
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
sudo nano /etc/profile.d/SCRIPT_NAME.sh
ist einfacher für Anfänger.
gksu gedit /etc/profile.d/SCRIPT_NAME.sh
ist das noch einfacher.
Immer wenn ich meinen Ordner mit BASH-Skripten "installiere", befolge ich das Testmuster für einen $HOME/bin
Ordner, der in den meisten .profile-Dateien der letzten Versionen von Ubuntu enthalten ist. Ich habe einen Test gemacht, der so aussieht
if [ -d "/usr/scripts" ]; then
PATH="/usr/scripts:$PATH"
fi
Es funktioniert in fast 100% der Fälle und ich kann es in einem GUI-Texteditor mit einem schnellen "Alle ersetzen" ändern, falls ich mich jemals dazu entscheide, /scripts
näher an meinen $HOME
Ordner heranzurücken. Ich habe dies in 6 Ubuntu-Installationen nicht getan, aber es gibt "immer morgen". S
BZT
Die empfohlene Methode zum Bearbeiten von PATH
ist aus der /etc/environment
Datei
Beispielausgabe von /etc/environment
:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Zum Beispiel, um den neuen Pfad von hinzuzufügen /home/username/mydir
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"
Starten Sie dann Ihren PC neu.
Systemweite Umgebungsvariablen
Eine geeignete Datei für Einstellungen von Umgebungsvariablen, die sich auf das gesamte System (und nicht nur auf einen bestimmten Benutzer) auswirken, ist / etc / environment. Eine Alternative besteht darin, eine Datei zu diesem Zweck im Verzeichnis /etc/profile.d zu erstellen.
/ etc / environment
Diese Datei ist speziell für systemweite Einstellungen von Umgebungsvariablen gedacht. Es ist keine Skriptdatei, sondern besteht aus Zuweisungsausdrücken, einer pro Zeile.
Hinweis: Die Variablenerweiterung funktioniert in / etc / environment nicht.
Weitere Informationen finden Sie hier: EnvironmentVariables
Öffnen Sie Ihr Terminal, geben Sie gedit .profile
Folgendes ein und fügen Sie es ein:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
#the following line add Bin where you dont have a Bin folder on your $HOME
PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"
Terminal schließen und öffnen, es sollte funktionieren.
Auch wenn Systemskripte dies nicht verwenden, sollte in allen Fällen, in denen ein Pfad (z. B. $HOME/bin
) zur Umgebungsvariablen PATH hinzugefügt werden soll, dieser verwendet werden
PATH="${PATH:+${PATH}:}$HOME/bin"
zum Anhängen (anstelle von PATH="$PATH:$HOME/bin"
) und
PATH="$HOME/bin${PATH:+:${PATH}}"
zum Voranstellen (statt PATH="$HOME/bin:$PATH"
).
Dies vermeidet den falschen Doppelpunkt vor / nach, wenn er $PATH
anfänglich leer ist, was unerwünschte Auswirkungen haben kann.
Für Ubuntu editiere die ~/.bashrc
und füge die folgende Zeile hinzu.
. ~/.bash_profile
Bearbeiten Sie dann Ihr .bash_profil nach Bedarf .....
.bash_profile
Sie "nach Bedarf bearbeiten " können. Was genau muss ich mit dem machen .bash_profile
?
.profile
oder .bash_profile
sollte Quelle .bashrc
. Nicht umgekehrt.