Es gibt eine Zeile, in ~/.profile
der
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
Ich bin mir nicht sicher über den letzten i
.
- Soll ich es entfernen?
- Ist es nicht ein Syntaxfehler?
bash
environment-variables
Lächeln
quelle
quelle
$PATH
Umgebungsvariable geht, aber es handelt sich überhaupt nicht um Duplikate. Sie sind höchstens verwandt. Diese Frage ist ein Problem, bei~/.profile
dem es sich zufällig um ein zusätzliches Zeichen in der Zeile handelt, in der die$PATH
Umgebung zugewiesen ist.PATH=
Zeile in~/.profile
aussehen sollte, um gültig zu sein - das ist hier die eigentliche Frage.Antworten:
Nein, es ist kein Syntaxfehler. Es ist nur ein Buchstabe, der nach der Erweiterung von angehängt wird
$PATH
, weil die Shell Anführungszeichen entfernt ...Es hat also nicht nur lokale Verzeichnisse vorangestellt, sondern auch das vorhandene
/snap/bin
aus meinem PATH entfernt und das nicht vorhandene hinzugefügt/snap/bini
.Sie können das entfernen
i
, um Ihren Pfad zu reparieren.Um die Änderung zu sehen, müssen Sie sich abmelden und wieder anmelden oder
source ~/.profile
in einer von Ihnen verwendeten Shell ausführen (oder die Shell damit startenbash -l
), da sie.profile
nur von Login-Shells gelesen wird .Wenn Sie diese Änderung nicht an sich
.profile
selbst vorgenommen haben, möchten Sie möglicherweise die Standarddatei durch Ausführen wiederherstellenDadurch wird die alte umbenannt
.profile
.profile.old
(Sie können die Datei auch löschen, wenn Sie möchten) und durch die Standardversion für Ihr System ersetzt/etc/skel
.quelle
Ich denke hier ist unklar, was der folgende Ausdruck bedeutet:
Der erste Teil
PATH=
bedeutet, dass wir der (Umgebungs-) Variablen einen neuen Wert zuweisen$PATH
.Der zweite Teil ist der neue Wert dieser Variablen. Im aktuellen Fall wird die Variable
$HOME
mit ihrem aktuellen Wert erweitert und an diesen Wert wird die Zeichenfolge angehängt/bin:
. Gleiches gilt für den nächsten Teil der Zeichenfolge$HOME/.local/bin:
. Schließlich wird der aktuelle (vorherige) Wert der$PATH
Variablen erweitert und angehängt. Der Doppelpunkt:
spielt eine Rolle als Begrenzer imPATH
Ausdruck.Das Ziel ist letztendlich zu schreiben :
PATH=<some additional paths>+<the the current value of $PATH>
. Wir setzen diese zusätzlichen Pfade vor die Zeichenfolge, da die Shell zuerst an diesen Speicherorten und dann systemweit nach ausführbaren Dateien suchen soll.Der Charakter
i
ist unnötig. Es wird an den neuen Wert von angehängt$PATH
und wird ein Chaos verursachen, wie @Zanna in ihrer Antwort erklärt .quelle
Ja, es handelt sich um einen Syntaxfehler. Der tatsächliche Fehler
.profile
sollte so aussehen, es sei denn, Sie haben Änderungen vorgenommen (dies ist die Version 17.10, siehe Hinweise darunter):Dies könnte in älteren Versionen von Ubuntu anders aussehen, in denen die Überprüfung, ob das Benutzerverzeichnis
bin
vorhanden ist, nicht in der enthalten war.profile
. Der einfachste Weg, um zu überprüfen, wie es aussehen sollte, ist ein Blick darauf/etc/skel/.profile
.Um hinzuzufügen, wie Sie in Ihrem Kommentar gefragt haben, platzieren Sie dies einfach am Ende Ihrer Profildatei:
Wenn Sie Ihr Profil jemals komplett durcheinander bringen, gibt es eine Kopie, in der Sie ein neues von in erhalten können
/etc/skel/
.quelle
/etc/skel/.profile
in 16.04 anders aussieht, ohne einen Test, ob"$HOME/bin"
vorhanden. Auch wenn dies eine bessere Variante (IMO) war, scheint sie bereits in 17.10 geändert worden zu sein - aus einem Grund oder aus Versehen.