Ich versuche, meine Pfadvariable so einzustellen, dass sie folgendermaßen aussieht:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jgrande/android-sdk-linux/platform-tools:/usr/lib/jvm/java-7-openjdk-amd64/bin/:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin
Und aus bestimmten Gründen sieht die Variable, egal welche Datei ich bearbeite, immer so aus (wobei sich der Java-Pfad einige Male wiederholt):
PATH=/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin
Ich habe meine persönliche bearbeiten versucht .bashrc
und .profile
sowie /etc/environment
, /etc/bash.bashrc
, /etc/profile
und stellen Sie sie in /etc/profile.d
. Nun gibt es jdk.sh
in /etc/profile.d
dem der PATH - Variable ist identisch mit dem falschen, dem ich oben gepostet. Ich habe jedoch versucht, die Zeile zu kommentieren und sogar jdk.sh
ganz zu entfernen, und das hat es immer noch nicht behoben.
Ansonsten ist mir aufgefallen, dass ich, wenn ich mich als anderer Benutzer anmelde, die richtige PATH-Variable habe und die durcheinandergebrachte nicht, da Java einige Male wiederholt wird.
Ich habe mich also gefragt, wo sonst meine PATH-Variable definiert werden könnte, die ich noch nicht überprüft habe.
jdk/bin:jgrande/bin
am Anfang undjdk/jre/bin
am Ende beides zweimal passiert. Ich weiß nicht, was "jgrande" ist, aber es sieht verdächtig aus. Ich würde danach in /etc/profile.d suchenAntworten:
Der PATH kann in jeder der verschiedenen Dateien festgelegt werden, die Bash Reads beim Start ausführen. Führen Sie Folgendes aus, um alle zu finden:
Das sind die Standard. Wenn Sie auch andere Dateien aus einer dieser Dateien beziehen, können die Dinge komplexer werden.
Um das Problem zu beheben - vorausgesetzt, Sie haben nichts mit den globalen Dateien in getan - können Sie
/etc/
Folgendes ausführen:Dadurch werden alle Zeileneinstellungen
PATH
aus diesen Dateien gelöscht . Fügen Sie nun die richtige an der richtigen Stelle hinzu:Wenn Bash als Login-Shell aufgerufen wird, liest es,
.bash_profile
falls vorhanden, und wenn nicht, liest es~/.profile
(es wird ignoriert,.profile
wenn.bash_login
es vorhanden ist, aber ich gehe davon aus, dass es nicht vorhanden ist). Die obigen Befehle speichern also zuerst Ihren gewünschten Pfad als$pp
und prüfen dann, ob ein~/.bash_profile
vorhanden ist. Fügen Sie die Pfaddefinition hinzu, falls dies der Fall ist, und fügen Sie sie hinzu, falls dies nicht der Fall ist~/.profile
.Um diese Art von Problemen in Zukunft zu vermeiden, verwenden Sie eine Funktion, um Verzeichnisse zu Ihren hinzuzufügen
$PATH
. Fügen Sie diese Zeilen zu Ihrem hinzu~/.profile
:Um dann etwas an den Anfang von
$PATH
hinzuzufügen, fügen Sie diese Zeile hinzu zu~/.profile
:Und um es am Ende hinzuzufügen:
Die Funktion fügt dem nur dann ein neues Verzeichnis hinzu,
$PATH
wenn es noch nicht vorhanden ist.quelle
Sie haben einen Hurrikan der Zufälligkeit auf Ihre Konfigurationen angewendet!
Wenn Sie Ihre Änderungen an den Dateien in nicht rückgängig machen können
/etc
, müssen Sie sie möglicherweise neu installierenbash
!Sie können Ihre persönlichen Einstellungen anpassen,
PATH
ohne Dateien zu ändern/etc
. Lesen Sie zum Beispiel diese Antworten . Ich bevorzuge natürlich meine Antwort.Sie könnten genau bestimmen , wo Sie in die Irre gehen werden durch das Lesen
man bash
,man less
und mit einem Auge auf denINVOCATION
Abschnittman bash
, den Einsatzless
auf den Startdateien. Wenn sie die Kontrolle (source
,.
) zu übertragen scheinen , verwenden Sieless
den!
Befehl ', um diese Datei zu lesen. Verwenden Sieless
den/
Befehl 's , um nach der ZeichenfolgePATH=
zu suchen undPATH
Zuweisungen in jeder Datei zu finden . Denken Sie daran, so dumm zu sein wiebash
.Sie könnten vergleichen (mit
diff
) die Startdateien (.bashrc
,.profile
,.bash_login
) zwischen Ihrem$HOME
und der „anderen Benutzer“.quelle
$PATH
Verwenden Sie Folgendes, um alle Stellen zu finden, an denen Umgebungsvariablen geändert werden:Dadurch werden alle Verzeichnisse auf Ihrem System mit Ausnahme der Verzeichnisse des virtuellen Dateisystems durchsucht. In meinem Fall werden mit drei gemounteten Distributionen 697 Dateien zurückgegeben.
Ein gezielterer Ansatz für OP ist die Suche nach einem bestimmten Pfadnamen. Sie könnten nach dem Programm suchen, das den ungewöhnlichen Teil von $ PATH festlegt, der Folgendes enthält:
Führen Sie dies im Terminal aus:
Wenn das erste Verzeichnis im $ PATH nicht der Schuldige ist, suchen Sie nach dem letzten:
grep
gibt den Namen des Skripts / der Datei zurück, die $ PATH setzt.quelle