Meine Frage bezieht sich auf eine andere offeneFrage. Mein echo $PATH gibt mir eine Ausgabe, die wie folgt aussieht
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/
Aber rennen
ifconfig
gibt mir eine Ausgabe wie
Command 'ifconfig' is available in '/sbin/ifconfig'
The command could not be located because '/sbin' is not included in the PATH environment variable.
This is most likely caused by the lack of administrative privileges associated with your user account.
ifconfig: command not found
nach dem Ausführen des Befehls wie in der anderen Frage angegeben
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
es läuftifconfigblockiert aber andere Befehle von Ruby Rails oder RVM.
Ich brauche Hilfe, um dieses Problem zu beheben. Und warum passiert das?
Antwort1
Versuchen Sie den folgenden Befehl
export PATH=$PATH:/usr/sbin
ODER (wenn Sie alle Pfade festlegen möchten)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
Antwort2
Ihr Original $PATH
(die von Ihnen gepostete Zeile ist nicht gut lesbar):
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:
/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:
/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:
/usr/local/bin:/usr/bin:/bin:/usr/games:
/home/sahil/.rvm/bin{}:
/home/android-sdks/{}:
/home/android-sdks/platform-tools/{}:
/home/android-sdks/tools/{}:
/home/sahil/android-sdks/tools{}:
/home/sahil/android-sdks/tools:
/home/sahil/android-sdks/platform-tools/
Sie haben /usr/local/bin
, /usr/bin
und /bin
. Wie Sie bereits herausgefunden haben, ifconfig
ist darin /sbin
.
Dort, wo dieser Pfad festgelegt ist, müssen Sie also auch Folgendes einschließen /sbin
.
SehenAbonnierenDokumentation dazu.
Antwort3
/sbin ist normalerweise Teil des Pfads. Andere Distributionen wie Fedora haben es für normale Benutzer nicht im PATH, aber ich glaube, Ubuntu hat es immer. Ich schlage vor, Sie überprüfen Ihre /etc/environment-Datei und prüfen, ob sie gültig ist und /sbin zum Pfad hinzugefügt wurde. Wenn ich ausführeKatze /etc/Umgebung, erhalte ich folgende Ausgabe:
adnan@adnan-laptop:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Wie du sehen kannst/sbinist bereits Teil der Umgebungsvariable PATH. Wenn Ihre Datei denselben Inhalt hat, überprüfen Sie ihre Berechtigungen, andernfalls fügen Sie /sbin zu PATH in dieser Datei hinzu. Für mich sind die Berechtigungen:
adnan@adnan-laptop:~$ ls -l /etc/environment
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
Antwort4
Was ist die PATH
Variable?
PATH
ist eine Liste von Verzeichnispfaden. Wenn der Benutzer einen Befehl eingibt, ohne den vollständigen Pfad anzugeben, wird diese Liste überprüft, um festzustellen, ob sie einen Pfad enthält, der zu dem Befehl führt. Die Reihenfolge der Pfade in dieser Variable gibt die Reihenfolge an, in der nach dem Befehl gesucht wird. Falls ein Programm mit demselben Namen in mehreren Verzeichnissen vorhanden ist, wird das Programm ausgeführt, das sich im Ordner befindet, der am Anfang der Liste (links) liegt.
Der Grund, warum andere Befehle (von Ruby Rails und RVM) blockiert wurden, ist, dass Sie Folgendes ausgeführt haben:
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
was zu einem führt, PATH
dassbeinhaltet nichtdie Ordner solcher Programme, nämlich:
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin
/sbin
Stattdessen sollten Sie Ihren eigenen hinzufügen PATH
.
So fügen Sie /sbin
hinzuPATH
Da das PATH
grundsätzlich immer in der Umgebung vorhanden ist, müssen Sie es nicht exportieren, sondern nur das /sbin
Verzeichnis hinzufügen. Dazu können Sie in Ihrer Bash ausführen
PATH="$PATH:/sbin"
Ihr Pfad sollte jetzt ungefähr so aussehen:
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/:/sbin
Diese Änderung ist jedoch nicht dauerhaft. Sobald Sie Ihre aktuelle Sitzung schließen, PATH
wird sie mit dem vorherigen Wert neu geladen. Um sie dauerhaft zu machen, sollten Sie diese Änderung Ihrer ~/.profile
Datei hinzufügen. Eine Möglichkeit, dies zu tun, ist die folgende:
echo 'PATH="$PATH:/sbin"' >> ~/.profile
Jetzt müssen Sie nur noch den Inhalt von „~/.profile“ in der aktuellen Shell ausführen.
source ~/.profile
Sie können loslegen. Nicht nur Ihre aktuelle Shell, sondern alle Ihre zukünftigen Sitzungen enthalten PATH
das Verzeichnis.
Warum habe ich ~/.profile statt ~/.bashrc verwendet?
Dieses Konzept kann für Sie nützlich sein:
~/.profile
ist der Ort, an dem Sie Dinge ablegen, die für Ihre gesamte Sitzung gelten, z. B. Programme, die Sie beim Anmelden starten möchten (aber keine grafischen Programme, diese kommen in eine andere Datei) und
Umgebungsvariablendefinitionen.
~/.bashrc
ist der Ort, an dem Sie Dinge ablegen können, die nur für Bash selbst gelten, wie etwa Alias- und Funktionsdefinitionen, Shell-Optionen und Eingabeaufforderungseinstellungen. (Sie könnten dort auch Tastenkombinationen ablegen, aber für Bash landen diese normalerweise in ~/.inputrc.)
Mehr Informationen zu diesem Thema bekommen Sie hier nicht.
Sollten Sie /sbin
in Ihrem haben PATH
?
Ich werde hier nicht diskutieren, ob es standardmäßig /sbin
enthalten sein sollte oder nicht, da sich dies als keine sehr produktive Diskussion erweisen könnte. Ich habe es, Sie können es haben, wenn Sie möchten. Ihre Entscheidung.PATH