Wie kann ich $ PATH in Ubuntu auf seinen Standardwert zurücksetzen?


31

Ich habe versehentlich alle Verzeichnisse von gelöscht, $PATHwährend ich versucht habe, ein neues hinzuzufügen ~/.bashrc. Ich habe während der Bearbeitung ein neues Terminalfenster geöffnet und bin jetzt $PATHleer. Ich mache mir Sorgen, wenn ich von einem anderen Laufwerk boote, um festzustellen, dass $PATHich dieses Laufwerk nicht mehr booten kann.

Was ist das Standardergebnis von echo $PATH?


1
Wenn Sie diese Exportzeile auskommentieren oder korrigieren, können Sie loslegen.
Panther

~/.bashrcist jedoch der falsche Ort, um Umgebungsvariablen zu setzen. Sie sollten das ~/.profilestattdessen tun .
Geirha

Ja, ich habe es herausgefunden. PATH ist in dem anderen Terminalfenster, das vor dem neuen geöffnet war, noch in Ordnung. Sie müssen also nur die Exportzeile korrigieren, indem Sie :$PATHam Ende den PATH wiederherstellen. Und ja, ~/.profilees gibt Code, um "PATH so einzustellen, dass er den privaten Bin des Benutzers enthält, falls vorhanden", dh$HOME/bin
Cee

Antworten:


35

Die Antwort auf Ihre Frage lautet:

PATH=$(getconf PATH)

und funktioniert auf jedem POSIX-kompatiblen System. Die ausgewählte Antwort ist der richtige Weg, um den Pfad zu erweitern, ohne zuvor vorhandene Inhalte zu löschen. Wenn Sie bash verwenden, sollten Sie Folgendes berücksichtigen:

PATH+=:$mynewdir

Ich hatte Probleme bei der Verwendung vieler Befehle ( sed: No such file or directoryArt des Problems), nachdem ich während eines sehr langen Prozesses versehentlich meinen PATH auf nichts gesetzt hatte (dh ich konnte nicht neu starten). Ich konnte nicht verwenden getconf. Um meinen Pfad zurückzusetzen, habe ich verwendet $(export $(cat /etc/environment)":/usr/bin/additional:/usr/bin/paths"). Für die Neugierigen: Hier /etc/environmentwird die PATH-Variable in vielen Linux-Varianten anfangs festgelegt.
Nick Bull

2
Das würde mich überraschen. Vielleicht "exportieren" ohne das umgebende "$ (...)" Zeug, aber es wird das sein, was gerade da ist. Verwenden Sie "source / etc / ..". Versuchen Sie auf jeden Fall "/ usr / bin / getconf", wenn Sie "getconf" nicht einmal finden können.
Bruce

Ziehen Sie es im Nachhinein vor, Ihre endgültige Idee auf dem vollen Pfad zu verwenden! Vielen Dank für die Antwort
Nick Bull

1
Wenn die PATH-Variable leer ist, ist dies PATH=$(getconf PATH)nicht sinnvoll, sondern führt nur zubash: getconf: No such file or directory
Max N,

1
Wenn PATH leer ist, notieren Sie sich den obigen Kommentar: Versuchen Sie es mit "/ usr / bin / getconf". Wenn dies nicht funktioniert, müssen Sie lernen, wo Ihr System seine POSIX-Befehle ablegt, und dieses Verzeichnis verwenden.
Bruce

17

Sie finden es unter / etc / environment:

$ /usr/bin/cat /etc/environment

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

Quell es einfach:

$ source /etc/environment 
$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

1
cat wird nicht so funktionieren wie in deiner Antwort, da es keinen $ PATH gibt
Josef Klimuk

Du hast recht. Ich habe gerade die Antwort geändert. Vielen Dank!
Manuel Jesus Rodriguez

8

Hinzufügen: $ PATH am Ende der Exportzeile hat das Problem behoben, zB export PATH=<directory to be added>:$PATH

Ich füge diese Zeile der ~/.bash_rcDatei anstelle der ~/.profileDatei hinzu, damit ich den Effekt sofort in einem neuen Terminal und aus anderen Gründen anhand der folgenden Informationen sehen kann: https://superuser.com/questions/176404/linux-bash-not- Lade-Profil-in-neuer-Sitzung

Für mich ist die Standardausgabe echo $PATHvor dem Hinzufügen des neuen Verzeichnisses:

/ usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games


3

Der Standardpfad ist

/home/_username_/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 

Hoffe das hilft dir


Das unterscheidet sich von meinem Standardpfad. Siehe unten.
Cee
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.