Wie setze ich $ PATH dauerhaft unter Linux / Unix?

879

Ich versuche, meinem Pfad ein Verzeichnis hinzuzufügen, damit es sich immer in meinem Linux-Pfad befindet. Ich habe es versucht:

export PATH=$PATH:/path/to/dir

Dies funktioniert jedoch jedes Mal, wenn ich das Terminal verlasse und eine neue Terminalinstanz starte, geht dieser Pfad verloren und ich muss den Exportbefehl erneut ausführen.

Wie kann ich das machen, damit dies dauerhaft eingestellt wird?

Klicken Sie auf Upvote
quelle

Antworten:

230

Es gibt mehrere Möglichkeiten, dies zu tun. Die tatsächliche Lösung hängt vom Zweck ab.

Die Variablenwerte werden normalerweise entweder in einer Liste von Zuweisungen oder in einem Shell-Skript gespeichert, das zu Beginn der System- oder Benutzersitzung ausgeführt wird. Im Falle des Shell-Skripts müssen Sie eine bestimmte Shell-Syntax und / exportoder setBefehle verwenden.

Systemweit

  1. /etc/environmentListe der eindeutigen Zuordnungen, ermöglicht Referenzen. Ideal für das Hinzufügen systemweite Verzeichnisse wie /usr/local/something/binauf PATHVariablen oder definieren JAVA_HOME. Wird von PAM und SystemD verwendet.
  2. /etc/environment.d/*.confListe der eindeutigen Zuordnungen, ermöglicht Referenzen. Ideal für das Hinzufügen systemweite Verzeichnisse wie /usr/local/something/binauf PATHVariablen oder definieren JAVA_HOME. Die Konfiguration kann in mehrere Dateien aufgeteilt werden, normalerweise eine pro Tool (Java, Go, NodeJS). Wird von SystemD verwendet, das diese Werte nicht an Benutzer-Login-Shells weitergibt.
  3. /etc/xprofileShell-Skript, das beim Starten der X Window System-Sitzung ausgeführt wird. Dies wird für jeden Benutzer ausgeführt, der sich bei X Window System anmeldet. Es ist eine gute Wahl für PATHEinträge, die für jeden Benutzer gültig sind /usr/local/something/bin. Die Datei ist in einem anderen Skript enthalten. Verwenden Sie daher die POSIX-Shell-Syntax und nicht die Syntax Ihrer Benutzer-Shell.
  4. /etc/profileund /etc/profile.d/*Shell-Skript. Dies ist eine gute Wahl für Nur-Shell-Systeme. Diese Dateien werden nur von Shells im Anmeldemodus gelesen.
  5. /etc/<shell>.<shell>rc. Shell-Skript. Dies ist eine schlechte Wahl, da es spezifisch für eine einzelne Schale ist. Wird im Nicht-Login-Modus verwendet.

Benutzersitzung

  1. ~/.pam_environment. Liste der eindeutigen Zuordnungen, keine Referenzen zulässig. Wird von PAM zu Beginn jeder Benutzersitzung geladen, unabhängig davon, ob es sich um eine X Window System-Sitzung oder -Shell handelt. Sie können nicht auf andere Variablen verweisen, einschließlich HOMEoder PATHnur in begrenztem Umfang. Wird von PAM verwendet.
  2. ~/.xprofileShell-Skript. Dies wird ausgeführt, wenn sich der Benutzer beim X Window System-System anmeldet. Die hier definierten Variablen sind für jede X-Anwendung sichtbar. Perfekte Wahl für die Erweiterung PATHmit Werten wie ~/binoder ~/go/binoder Definition von benutzerspezifisch GOPATHoder NPM_HOME. Die Datei ist in einem anderen Skript enthalten. Verwenden Sie daher die POSIX-Shell-Syntax und nicht die Syntax Ihrer Benutzer-Shell. Ihr grafischer Texteditor oder Ihre IDE, die über eine Verknüpfung gestartet wurden, sehen diese Werte.
  3. ~/.profile, ~/.<shell>_profile, ~/.<shell>_loginShell - Skript. Es ist nur für Programme sichtbar, die vom Terminal oder Terminalemulator gestartet wurden. Es ist eine gute Wahl für reine Shell-Systeme. Wird von Shells im Anmeldemodus verwendet.
  4. ~/.<shell>rc. Shell-Skript. Dies ist eine schlechte Wahl, da es spezifisch für eine einzelne Schale ist. Wird von Shells im Nicht-Login-Modus verwendet.

Anmerkungen

Gnome on Wayland startet die Benutzer-Login-Shell, um die Umgebung abzurufen. Es nutzt effektiv Login - Shell - Konfigurationen ~/.profile, ~/.<shell>_profile, ~/.<shell>_loginDateien.

Anleitungen

  • Umgebung
  • Umwelt.d
  • Bash
  • Strich

Distributionsspezifische Dokumentation

verbunden

Unterschied zwischen Login Shell und Non-Login Shell?

Grzegorz Żur
quelle
4
Vielen Dank für die ausführliche Antwort, diese sollte höher sein. Vielleicht .bash_profilesollte auch die Liste hinzugefügt werden?
James Ko
2
@ JamesKo, das war Nummer 4
trve.fa7ad
1
Ich denke, die beste Antwort wird vorgeschlagen /etc/environment. Aber kann ich es aktualisieren, ohne mich ab- und anzumelden? Manchmal benutze ich kein Bash oder Sh, also source /etc/environmentfunktioniert es nicht.
Banan3'14
2
Großartig und meiner Meinung nach die vollständigste Antwort. Sollte viel höher sein.
Peter Gloor
2
Mein Grund, nach diesem Thema zu suchen, war eigentlich Go. Ich bin froh zu sehen, dass ich nicht der einzige bin, der erkannt hat, dass .bashrc nicht der richtige Ort ist. ;)
Peter Gloor
1039

Sie müssen es Ihrer ~/.profileoder ~/.bashrcDatei hinzufügen . 

export PATH="$PATH:/path/to/dir"

Je nachdem, was Sie tun, möchten Sie möglicherweise auch einen Symlink zu Binärdateien erstellen:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

Beachten Sie, dass dadurch Ihr Pfad für den Rest der Sitzung nicht automatisch aktualisiert wird. Dazu sollten Sie Folgendes ausführen:

source ~/.profile 
or
source ~/.bashrc
mpowered
quelle
11
Einige Fragen. 1) Sollte nicht da sein ein Doppelpunkt zwischen $PATHund /usr/bin. 2) Sollte /usr/binsogar da sein. 3) Solltest du nicht lieber verwenden /usr/local/bin?
Batandwa
197
Bitte beachten Sie : Es wird oft als Sicherheitslücke angesehen, einen abschließenden Doppelpunkt am Ende Ihres Bash-Pfads zu hinterlassen, da Bash im aktuellen Verzeichnis angezeigt wird, wenn die gesuchte ausführbare Datei nicht gefunden werden kann. Benutzer, die diesen Beitrag finden und nach weiteren Informationen suchen, sollten darauf hingewiesen werden.
Erewok
51
@AdamRobertson Es ist unsicher - betrachten Sie das Szenario, wenn Sie einen Tarball entpacken, dann cdin das Verzeichnis , in das Sie ihn entpackt haben, dann ausführen ls--- und dann feststellen, dass auf dem Tarball ein Schadprogramm aufgerufen lswurde.
Lily Chung
21
Für mich war es .bash_profile, nicht .profile. Das scheint für jeden anders zu sein.
Donquijote
9
Ich glaube, ich habe die Qualität dieser Antwort erheblich verbessert und einige Probleme angesprochen, die andere Benutzer angesprochen haben. Bei jedem Pfadexport oder bei jedem Befehl, der den Pfad anpasst, sollte immer sichergestellt werden, dass ein vorhandener Pfad durch einen Doppelpunkt getrennt wird. Führende oder nachfolgende Doppelpunkte sollten niemals verwendet werden, und das aktuelle Verzeichnis sollte sich niemals im Pfad befinden.
Erick Robertson
243

Bearbeiten Sie in Ubuntu /etc/environment. Der einzige Zweck besteht darin, Umgebungsvariablen zu speichern. Ursprünglich ist hier die Variable $ PATH definiert. Dies ist eine Einfügung aus meiner /etc/environmentDatei:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Sie können diese Datei also einfach als root öffnen und hinzufügen, was Sie wollen.

Führen Sie für sofortige Ergebnisse Folgendes aus (versuchen Sie es als normaler Benutzer und Root):

source /etc/environment && export PATH

AKTUALISIEREN:

Wenn Sie zsh(auch bekannt als Z Shell) verwenden, fügen Sie diese Zeile direkt nach den Kommentaren in /etc/zsh/zshenv:

source /etc/environment

Ich bin auf diese kleine Eigenart unter Ubuntu 15.10 gestoßen, aber wenn Ihr zsh nicht den richtigen Pfad erhält , könnte dies der Grund sein

trve.fa7ad
quelle
13
Nicht alle Systeme haben / etc / environment
user3439968
9
FWIW $PATHist auch /etc/profilein Arch Linux definiert.
Sparhawk
3
@ e-sushi Ich bin wirklich schockiert darüber. Ich bin selbst auf Ubuntu 14.04.1. und ich kann Ihnen versprechen, dass die Datei eingebaut wurde.
trve.fa7ad
2
Nachdem ich jeden Vorschlag unter der Sonne aber / etc / environment ausprobiert hatte und sie alle NICHT funktionierten, stolperte ich schließlich darüber. Ich bin auch auf Ubuntu 14.04 und dies ist die einzige, die die PATH-Variable nach dem Neustart tatsächlich geändert hat.
Chockomonkey
4
Der Benutzer sollte den PC nach dem Aktualisieren der Umgebungsdatei neu starten.
Harish_N
70

Geben Sie die exportErklärung ein ~/.bashrc. Meine .bashrc enthält Folgendes:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
Fraxtil
quelle
7
Neustart erforderlich?
Klicken Sie auf Upvote
2
Arbeitete, als ich dies in die .profile', nicht gefunden.bashrc
Klicken Sie auf Upvote
Dies kann vom genauen System abhängen. Ich bin nicht sicher, welche Bedingungen genau bestimmen, welche Datei ausgeführt wird. Ich bin froh, dass das Problem gelöst wurde.
Fraxtil
12
@Click Upvote Sie müssen etwas tun source ~/.bashrc, um die .bashrcKonfiguration neu zu laden . Dann wird es funktionieren
BigSack
4
Das exportSchlüsselwort wird nur benötigt, wenn PATHes nicht bereits als Umgebungsvariable gekennzeichnet ist - was es fast unbedingt sein wird. Hätte einfach PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATHden gleichen Effekt.
Charles Duffy
30

Sie können $PATHpermanent auf zwei Arten einstellen .

  1. So legen Sie den Pfad für einen bestimmten Benutzer fest: Möglicherweise müssen Sie den Eintrag .bash_profileim Home-Verzeichnis des Benutzers vornehmen .

    In meinem Fall werde ich beispielsweise den Java-Pfad im Tomcat-Benutzerprofil festlegen

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
  2. Um einen gemeinsamen Pfad für ALLE Systembenutzer festzulegen, müssen Sie möglicherweise den folgenden Pfad festlegen:

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
Mohit M.
quelle
3
Ist die Datei /etc/profilesmit einem sin Ihrer Distribution benannt? Meins hat keine s. Ich denke du hast einen Tippfehler.
Chris Johnson
3
Sie möchten wahrscheinlich dem $ entkommen, das Sie in die Profildatei schreiben. Beispiel: "export PATH = \ $ PATH: / path / to / dir" >> / etc / profile. Auf diese Weise hängen Sie die Variable tatsächlich an, wenn das Skript ausgeführt wird, anstatt sie auf einen Literalwert basierend auf dem Wert am zu setzen Zeitpunkt der Ausführung dieses ersten Befehls.
BuvinJ
15

Sie können auf Centos oder RHEL für lokale Benutzer verwenden:

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

Dadurch wird das aktuelle Verzeichnis zum PATH hinzugefügt (oder Sie können ein anderes Verzeichnis verwenden). Dadurch wird es dauerhaft, wird jedoch bei der nächsten Benutzeranmeldung wirksam.

Wenn Sie sich nicht erneut anmelden möchten, können Sie Folgendes verwenden:

source ~/.bash_profile

Das Nachladen # User specific environment and startup programsdieses Kommentars ist in vorhanden.bash_profile

Daniel Antonio Nuñez Carhuayo
quelle
12

Sie können auch eine dieser Dateien dauerhaft festlegen:

/etc/profile (für alle Benutzer)

~/.bash_profile (für aktuellen Benutzer)

~/.bash_login (für aktuellen Benutzer)

~/.profile (für aktuellen Benutzer)

Sie können auch /etc/environmenteine permanente PATH-Umgebungsvariable festlegen, diese unterstützt jedoch keine Variablenerweiterung .

Auszug aus: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html

Delucaramos
quelle
7

Ich bin gestern auf diese Frage gestoßen, als ich nach einer Möglichkeit gesucht habe, einen Ordner mit meinen eigenen Skripten zum PATH hinzuzufügen - und war überrascht, dass meine eigene ~/.profileDatei (unter Linux Mint 18.1) diese bereits enthielt:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Ich musste also nur den Ordner erstellen ~/binund meine Skripte dort ablegen.

RobertG
quelle
7

Ich denke, der eleganteste Weg ist:

1. Fügen Sie dies in die Datei ~ / .bashrc ein. Führen Sie diesen Befehl aus

gedit ~ / .bashrc

füge deinen Pfad hinzu

export PATH = $ PATH: / opt / node / bin

2.Quelle ~ / .bashrc

(Ubuntu)

Himanshu Sharma
quelle
6

Sie können diese Zeile zu Ihrer Konsolen-Konfigurationsdatei (z. B. .bashrc) oder zu .profile hinzufügen

aqua
quelle
2
Ich habe keine dieser Dateien in/home/(username)
Klicken Sie auf Upvote
3
@ClickUpvote: Welche Shell benutzt du? (Und Dateien, die mit einem Punkt beginnen, sind versteckt. Sie müssen ls -asie sehen.)
David Schwartz
Falls Sie keine dieser Dateien (bashrc oder profile) haben, können Sie sie manuell erstellen und sie werden automatisch verwendet
trve.fa7ad
4

Fügen Sie die Variable PATH dauerhaft hinzu

Global:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

Lokal (nur für Benutzer):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

Für globalen Neustart. Für lokales Relogin.

Beispiel

Vor:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin

Nach:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

Alternativ können Sie einfach das Profil bearbeiten:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

Ein anderer Weg (danke gniourf_gniourf):

echo 'PATH=$PATH:/new/path/variable' >> /etc/profile

Sie sollten hier keine doppelten Anführungszeichen verwenden! echo 'export PATH = $ PATH: / new / path / variable' ... Übrigens ist das Schlüsselwort export sehr wahrscheinlich nutzlos, da die Variable PATH sehr wahrscheinlich bereits als exportiert markiert ist. - gniourf_gniourf

user3439968
quelle
1
Nee. Sie sollten hier keine doppelten Anführungszeichen verwenden! echo 'export PATH=$PATH:/new/path/variable'... exportÜbrigens ist das Schlüsselwort sehr wahrscheinlich nutzlos, da die PATHVariable sehr wahrscheinlich bereits als exportiert markiert ist.
gniourf_gniourf
Nein, Sie sollten doppelte Anführungszeichen verwenden, da $ PATH in einfachen Anführungszeichen nicht interpoliert ist. Und BTW Export auch nützlich.
user3439968
Ich habe es bekommen. Sie können doppelte oder einfache Anführungszeichen verwenden, da $ PATH bei der Ausführung des Echos interpoliert oder bei der Ausführung von / etc / profile interpoliert wird.
user3439968
1
@ user3439968 Doppelte Anführungszeichen verursachen viele Probleme, wenn Sie aus mehreren Dateien an $ PATH anhängen. Bedenken Sie: Wenn Sie doppelte Anführungszeichen verwenden, wird $ PATH in eine statische Zeichenfolge mit allen zuvor definierten PATH-Verzeichnissen übersetzt. Angenommen, Sie hängen /usr/localmit an ~/.bashrc. jetzt, wenn Sie beabsichtigen, /opt/binan dieselbe Variable mit anzuhängen /etc/bash.bashrc; $ PATH wird auf die gleiche statische Zeichenfolge übersetzen, als ein Ergebnis $ PATH wird ersetzt statt angehängt ... Es wird eine Frage des Systems bevorzugt eine Datei über eine andere sein
trve.fa7ad
4

1. Ändern Sie die Datei "/ etc / profile".

#vi /etc/profile

Drücken Sie die Taste "i", um den Bearbeitungsstatus einzugeben und den Cursor an das Ende der Datei zu bewegen. Zusätzliche Einträge:

export PATH=$PATH:/path/to/dir;

Drücken Sie die Taste "Esc", um den Bearbeitungsstatus zu beenden. ': Wq' Speichern Sie die Datei.

2.Konfiguration effektiv machen

source /etc/profile

Erklären: Die Profildatei funktioniert für alle Benutzer. Wenn Sie nur für den aktiven Benutzer gültig sein möchten, legen Sie die Datei ".bashrc" fest

Jia
quelle
4

Nach so vielen Recherchen habe ich eine einfache Lösung dafür gefunden (ich verwende ein elementares Betriebssystem ), inspiriert von dem folgenden Link .

Führen Sie den folgenden Befehl aus, um die .bashrc-Datei im Bearbeitungsmodus zu öffnen . [Sie können auch vi oder einen anderen Editor verwenden].

~$ sudo nano ~/.bashrc

Fügen Sie die folgende Zeile am Ende der Datei hinzu und speichern Sie sie.

export PATH="[FLUTTER_SDK_PATH]/flutter/bin:$PATH"

Beispielsweise :

export PATH="/home/rageshl/dev/flutter/bin:$PATH"

Geben Sie hier die Bildbeschreibung ein

Ich glaube das ist die dauerhafte Lösung, um in der Ubuntu-Distribution den Pfad im Flattern festzulegen

Hoffe das wird hilfreich.

Ragesh S.
quelle
3

Die Dateien, in denen Sie den Exportbefehl hinzufügen, hängen davon ab, ob Sie sich im Anmeldemodus oder im Nichtanmeldemodus befinden.

Wenn Sie sich im Anmeldemodus befinden, suchen Sie entweder nach / etc / bash oder /etc/bash.bashrc

Wenn Sie sich im Nicht-Anmeldemodus befinden, suchen Sie nach der Datei /.profile oder nach den Dateien im Verzeichnis /.profiles.d

die oben genannten Dateien, wenn sich die Systemvariablen befinden.

Dikinha
quelle
3

Zum /etc/profile.dOrdnerskript [name_of_script].shmit Zeile hinzufügen : export PATH=$PATH:/dir. Jedes Skript innerhalb eines /etc/profile.dOrdners wird automatisch /etc/profilebei der Anmeldung ausgeführt.

Yuriy
quelle
Es wird empfohlen, wie Sie Ihre Umgebung anpassen können
Yuriy
1
Dies ist nur möglich, wenn die Einstellungen systemweit sein sollen, was wahrscheinlich nicht der häufigste Anwendungsfall ist. Die meisten Benutzer möchten (oder sollten), dass der Pfad lokal festgelegt wird, da die meisten Benutzer / Rollen kontextuell unterschiedliche Vorgänge ausführen. Je weniger Annahmen Sie treffen, desto besser.
mpowered
@mpowered, ja, das ist nur für systemweit. Wenn Sie PATH lokal ändern möchten, sollten Sie denselben Export in ~ / .profile oder ~ / .bashrc hinzufügen. Hier sollten Sie berücksichtigen, dass Login-Shells ~ / .profile und interaktive Shells ~ / .bashrc lesen. Dies ist sehr wichtig, da ssh beispielsweise keine Anmeldung durchführt und daher ~ / .profile nicht gelesen wird. Mehrere Distributionen wie suse source ~ / .bashrc in / etc / profile. Aber es ist nicht für alle Linux '
Yuriy
3

Zues77 hat die richtige Idee. Das OP sagte nicht "Wie kann ich mich durch das hindurchhacken?". OP wollte wissen, wie man permanent an $ PATH anhängt:

sudo nano /etc/profile

Hier ist es für alles eingestellt und der beste Ort, um es für alle Dinge zu ändern, die $ PATH benötigen

Joe D.
quelle
3

Meine Antwort bezieht sich auf das Einrichten von go-langon. Ubuntu linux/amd64Ich hatte die gleichen Probleme, den Pfad der Umgebungsvariablen ( GOPATHund GOBIN) source <file_name>festzulegen , ihn beim Beenden des Terminals zu verlieren und ihn jedes Mal neu zu erstellen. Der Fehler bestand darin, den Pfad zu setzen ( GOPATHund GOBIN) im ~/.bash_profileOrdner. Nach ein paar guten Stunden verschwenden, fand ich , dass die Lösung zu bringen war GOPATHund GOBINin ~/.bash_rcder Art und Weise Datei:

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN

Dabei funktionierte die Go-Installation einwandfrei und es gab keine Pfadverluste.

BEARBEITEN 1: Der Grund, mit dem dieses Problem zusammenhängen kann, ist, dass Einstellungen für Nicht-Login-Shells wie Ihr Ubuntu-Terminal oder Gnome-Terminal, auf dem wir den Go-Code ausführen, aus der ~./bash_rcDatei übernommen werden und die Einstellungen für Login-Shells aus der ~/.bash_profileDatei und übernommen werden aus ~/.profileDatei, wenn ~/.bash_profileDatei nicht erreichbar ist.

Abhiroj Panwar
quelle
3

Angenommen, Sie verwenden MacOS und haben eine Binärdatei, der Sie vertrauen und die Sie systemweit verfügbar machen möchten. Sie möchten jedoch nicht unbedingt, dass das Verzeichnis, in dem die Binärdatei zu Ihrem PATH hinzugefügt werden soll, kopiert / verschoben werden die Binärdatei zu /usr/local/bin, die sich bereits in Ihrem PFAD befinden sollte. Dadurch wird die Binärdatei wie jede andere Binärdatei ausführbar, auf die Sie möglicherweise bereits in Ihrem Terminal Zugriff haben.

Löwe
quelle
3

Es kann direkt mit dem folgenden Befehl hinzugefügt werden:

echo 'export PATH=$PATH:/new/directory' >> ~/.zshrc
source ~/.zshrc
Anoop Nagabhushan
quelle
2
Die Frage ist beschriftet bash, das ist also nicht sehr hilfreich.
Laurenz Albe
2
Dies ist eine gültige Antwort -> der Titel erwähnt nur Linux, also wird bash und AUCH zsh tun ... wenn das Tagging nur "bash" ist, müssen wir auch "zsh" zu den Tags hinzufügen
Carlos Saltos
2

Der beste einfache Weg ist die folgende Zeile:
PATH="<directory you want to include>:$PATH"
in Ihrer .bashrc-Datei im Home-Verzeichnis.
Es wird nicht zurückgesetzt, selbst wenn Sie das Terminal schließen oder Ihren PC neu starten. Es ist dauerhaft

Edward Torvalds
quelle
1
@quant Wenn Sie das tun, was gesagt wird, werden Ihre Einstellungen dauerhaft festgelegt. Es funktioniert auch, wenn Sie das Terminal schließen.
Edward Torvalds
1

Ich denke, der eleganteste Weg ist:

1. Fügen Sie dies in die Datei ~. / Bashrc ein

if [ -d "new-path" ]; then
  PATH=$PATH:new-path
fi

2.Quelle ~ / .bashrc

(Ubuntu)

Gimcuan Hui
quelle
Und um den Pfad nach oben anzuzeigen: printf "% s \ n" $ PATH
Robot70
1

Eine Möglichkeit, einen dauerhaften Pfad hinzuzufügen, der für mich funktioniert hat, ist:

    cd /etc/profile.d
    touch custom.sh
    vi custom.sh 
    export PATH=$PATH:/path according to your setting/

Starten Sie Ihren Computer neu und hier gehen wir Weg wird dort dauerhaft jubeln.

user6393373
quelle
Sie müssen Ihren Computer nicht neu starten. Das Abmelden und erneutes Anmelden ist ausreichend. Dies ist eine recht elegante Lösung, da Änderungen sehr einfach rückgängig gemacht werden können, ohne dass Dateien bearbeitet werden müssen. Es ist auch einfach, eine if-Anweisung anzugeben, damit ein Verzeichnis, das auf dem System nicht vorhanden ist, nicht zur PATH-Variablen hinzugefügt wird.
Warwick
0

Für die Debian-Verteilung müssen Sie:

    - edit ~/.bashrc  e.g: vim ~/.bashrc 
    - add export PATH=$PATH:/path/to/dir
    - then restart your computer. Be aware that if you edit ~/.bashrc  as root, your environment variable you added will work only for root
nur ich
quelle
0

Dies ist ein Einzeiler . Es fügt dem eine Zeile hinzu .bashrc. Die Zeile prüft, ob das Verzeichnis bereits zum Pfad hinzugefügt wurde, und hängt an, wenn nicht. Dadurch wird verhindert, dass Ihr Verzeichnis bei jeder Quelle im Pfad dupliziert wird .bashrc.

echo "[[ \":\$PATH:\" != *\":$(pwd)/path/to/add:\"* ]] && export PATH=\"\${PATH:+\${PATH}}:$(pwd)/path/to/add\"" >> ~/.bashrc

source ~/.bashrc
sr9yar
quelle