
Ich habe rbenv installiert, ein Ruby-Versionsverwaltungsprogramm. Ich habe in der .bashrc-Datei nachgesehen und festgestellt, dass die Pfadvariable wie folgt geändert wurde:
export PATH="$HOME/.rbenv/bin:$PATH"
Ich denke, der Teil ":$PATH" wurde eingefügt, um den alten Pfadinhalt einzuschließen. Ich würde gerne wissen, was passieren würde, wenn ein Programm, das die Pfadvariable ändert, den Teil ":$PATH" nicht einschließt. Könnte ich einige Programme nicht über die Befehlszeile ausführen, da die Bin-Verzeichnisse, in denen sie sich befinden, nicht mehr in der neuen Pfadvariable enthalten sind?
Antwort1
Sie haben Recht. Pakete von Drittanbietern sollten daher den aktuellen Pfad nur erweitern und nicht einschränken.
Antwort2
PATH
ist eine durch Doppelpunkte getrennte Liste von Verzeichnissen, die Ihre Shell ( bash
,,,,, usw. ) verwendet, um etwas zum Ausführen zu finden. Wenn das erste Wort der Zeile, die Sie in die Shell eingeben, kein Shell-Builtin oder Alias ist, durchsucht die Shell die Liste der Verzeichnisse in und fish
sucht nach einer ausführbaren Datei mit demselben Namen wie das erste Wort des von Ihnen eingegebenen Befehls. ksh
sh
$PATH
command not found
Fehler bei allgemeinen Befehlen ( da/media/w3/0123-4567/PODCASTS/2016-Nov-27/loe-wildlife-decline.mp3te
, ls
, ...) deuten auf einen fehlerhaften hin PATH
. Ein Notfall PATH
(der ausreicht, um das Problem zu beheben) kann mit festgelegt werden export PATH=/usr/bin:/bin:/usr/local/bin:/snap/bin
.
Viele PATH
Fehler sind Shell-Syntaxfehler ( Spacevor oder nach =
. Es ist PATH=value
, keine Leerzeichen).
Was die „Pfadbeschädigung“ betrifft: Wenn ich eine „spezielle“ Version von erstellt habe ls
, die in gespeichert ist /.evil/bin/ls
, UND ich Ihren Pfad beschädigen kann, sodass er/.evil/bin
VOR /bin
, wenn Sie eingeben ls
, wird die Shell /.evil/bin/ls
anstelle von ausgeführt /bin/ls
. Ein bekanntes Problem, aber bis es nützlich wird, ist Ihr System bereits vollständig durchdrungen.
Antwort3
Sie können sie ausführen, Sie müssen nur den vollständigen Pfad angeben. Durch die Änderung PATH
werden die zugehörigen Berechtigungen nicht geändert.