Wie füge ich ein Verzeichnis $PATHin Ubuntu hinzu und mache die Änderungen dauerhaft?
Wie füge ich ein Verzeichnis $PATHin Ubuntu hinzu und mache die Änderungen dauerhaft?
Antworten:
Ein eingegebener Pfad .bash_profilewird nur in einer Bash-Anmeldeshell ( bash -l) festgelegt. Wenn Sie Ihren Pfad .profileeingeben, 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]/environansehen (ersetzen Sie [pid] durch die Zahl von ps axf). ZB verwendengrep -z "^PATH" /proc/[pid]/environ
bashAls Login-Shell wird nicht analysiert, .profileob eine existiert .bash_profileoder 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_environmentoder .bashrcinteraktive 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 .bashrcin Ihrem Ausgangsverzeichnis und fügen Sie die folgende Zeile hinzu:
export PATH="/path/to/dir:$PATH"
Sie müssen Ihre .bashrcoder Logout / Login-Adresse eingeben (oder das Terminal neu starten), damit die Änderungen wirksam werden. Um Ihre Quelle zu finden, geben Sie .bashrceinfach ein
$ source ~/.bashrc
.bashrc" Sie Ihre ? Wie "starte ich das Terminal neu"?
.bashrcist nicht der richtige Ort zum Festlegen von Umgebungsvariablen. Sie sollten hineingehen .profileoder .pam_environment. Siehe mywiki.wooledge.org/DotFiles
. .bashrcnicht .bashrc:) oder source .bashrcfü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 PATHdefiniert)
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 sudoin 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 PATHUmgebungsvariablen der neue Pfad zugewiesen . Um zu überprüfen, führen Sie env aus und sehen Sie den PATHWert 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:
$HOMEOrdner..profileSie 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_environmentDatei im Home-Verzeichnis erstellen .PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.Fügen Sie diese Zeile in Ihre ~/.bashrcDatei 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 ~/.profileDatei. PATHSollte jedoch wahrscheinlich nicht beides tun, da der Pfad Ihrer Umgebung zweimal hinzugefügt wird, wenn Sie ein Terminal öffnen.
$HOME/.profilefür persönliche Einstellungen oder /etc/profilefü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 ~/.profileoder setzen ~/.pam_environment, wird es von der Gnomensitzung (oder von der DE, die Sie verwenden) geerbt. Das Anhängen von PATH in ~/.bashrchat auch den Nachteil, dass, wenn Sie / exec bash interaktiv von einer anderen interaktiven bash-Shell aus öffnen, es mehrmals angehängt wird.
~/.profilejedoch, dass es für persönliche Wege richtig ist; Dort fügt Ubuntu das ~/binVerzeichnis hinzu. Und ich gebe zu, dass ich die Anzahl der Wege ein wenig übertrieben habe - nur ein bisschen.
~/.profilein diesem Fall mitgehen .
Fügen Sie die Zeile export PATH=/path/you're/adding:$PATHan 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 .bashrcstattdessen. GUI-Terminals in Ubuntu sind keine Login-Shells und werden daher .bash_profilenicht ausgeführt.
.bash_profile. Wenn bash kein findet .bash_profile(wenn Sie sich interaktiv anmelden), sucht .profileund verwendet es das stattdessen. Standardmäßig haben Sie ein .profileund .bashrcin Ubuntu. Und .profileist der richtige Ort, um Umgebungsvariablen zu setzen, wenn wir pam_env nicht berücksichtigen.
Im Terminal cdzuthe_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.shist einfacher für Anfänger.
gksu gedit /etc/profile.d/SCRIPT_NAME.shist das noch einfacher.
Immer wenn ich meinen Ordner mit BASH-Skripten "installiere", befolge ich das Testmuster für einen $HOME/binOrdner, 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, /scriptsnäher an meinen $HOMEOrdner heranzurücken. Ich habe dies in 6 Ubuntu-Installationen nicht getan, aber es gibt "immer morgen". S
BZT
Die empfohlene Methode zum Bearbeiten von PATHist aus der /etc/environmentDatei
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 .profileFolgendes 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 $PATHanfänglich leer ist, was unerwünschte Auswirkungen haben kann.
Für Ubuntu editiere die ~/.bashrcund füge die folgende Zeile hinzu.
. ~/.bash_profile
Bearbeiten Sie dann Ihr .bash_profil nach Bedarf .....
.bash_profileSie "nach Bedarf bearbeiten " können. Was genau muss ich mit dem machen .bash_profile?
.profileoder .bash_profilesollte Quelle .bashrc. Nicht umgekehrt.