ifconfig: Befehl „ifconfig“ ist in „/sbin/ifconfig“ verfügbar.

ifconfig: Befehl „ifconfig“ ist in „/sbin/ifconfig“ verfügbar.

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/binund /bin. Wie Sie bereits herausgefunden haben, ifconfigist 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 PATHVariable?

PATHist 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, PATHdassbeinhaltet 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

/sbinStattdessen sollten Sie Ihren eigenen hinzufügen PATH.

So fügen Sie /sbinhinzuPATH

Da das PATHgrundsätzlich immer in der Umgebung vorhanden ist, müssen Sie es nicht exportieren, sondern nur das /sbinVerzeichnis 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, PATHwird sie mit dem vorherigen Wert neu geladen. Um sie dauerhaft zu machen, sollten Sie diese Änderung Ihrer ~/.profileDatei 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 PATHdas Verzeichnis.

Warum habe ich ~/.profile statt ~/.bashrc verwendet?

Dieses Konzept kann für Sie nützlich sein:

  • ~/.profileist 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.

  • ~/.bashrcist 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 /sbinin Ihrem haben PATH?

Ich werde hier nicht diskutieren, ob es standardmäßig /sbinenthalten 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

verwandte Informationen