web-dev-qa-db-fra.com

ifconfig: la commande 'ifconfig' est disponible dans '/ sbin / ifconfig'

Ma question est liée à une autre question ouverte question . Mon echo $ PATH me donne une sortie qui ressemble à

/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/

Mais courir

ifconfig 

me donne une sortie comme

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

après l'exécution de la commande comme donnée dans une autre question

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

il exécute ifconfig mais bloque les autres commandes de Ruby Rails ou rvm.

Demander de l'aide pour résoudre ce problème. Aussi pourquoi cela se produit?

6
Sahil Grover

Essayez la commande ci-dessous

export PATH=$PATH:/usr/sbin

OU (si vous voulez définir tous les chemins)

export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
7
Manula Waidyanatha

Vous pouvez facilement résoudre ce problème en ajoutant /sbin à $PATH. Le point le plus important est que, vous ne devriez pas avoir /sbin dans le chemin par défaut .

Voir cette page pour une description de pourquoi: /sbin définition du répertoire

/sbin contient les utilitaires système devant être exécutés par root ou par le biais de l’autorité Sudo. Donc, si vous voulez voir votre configuration réseau, tapez simplement:

Sudo /sbin/ifconfig

Vous serez invité à entrer votre mot de passe, puis ifconfig sera exécuté.

1
ZacSketches

Votre $PATH d'origine (la ligne que vous avez postée n'est pas très lisible):

/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/

Vous avez /usr/local/bin, /usr/bin et /bin. Comme vous l'avez déjà découvert, ifconfig est à l'intérieur de /sbin.

Ainsi, lorsque ce chemin est défini, vous devez également inclure /sbin.

Voir rubygems docs pour savoir comment faire cela.

1
Rinzwind

/ sbin fait normalement partie du chemin. D'autres distributions comme Fedora ne l'ont pas dans PATH pour les utilisateurs normaux, mais je pense que Ubuntu en a toujours. Je vous suggérerai de vérifier votre fichier/etc/environment et de voir s'il est valide et si/sbin est ajouté au chemin. Quand je lance cat/etc/environment, je reçois le résultat suivant:

adnan@adnan-laptop:~$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Comme vous pouvez le voir / sbin fait déjà partie de la variable d’environnement PATH. Si votre fichier a le même contenu, vérifiez ses autorisations, sinon ajoutez/sbin à PATH dans ce fichier. Pour moi les autorisations sont:

adnan@adnan-laptop:~$ ls -l /etc/environment 
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
1
binW

Qu'est-ce que PATHname__variable?

PATHest une liste de chemins de répertoire. Lorsque l'utilisateur tape une commande sans fournir le chemin complet, cette liste est vérifiée pour voir si elle contient un chemin menant à la commande. L'ordre des chemins dans cette variable indique l'ordre dans lequel la commande sera recherchée, s'il existe un programme du même nom dans plusieurs répertoires, celui situé dans le dossier le plus proche du début de la liste (côté gauche) sera affiché. réalisé.

La raison pour laquelle vous avez bloqué d'autres commandes (de Ruby Rails et rvm) est parce que vous avez exécuté ceci:

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

il en résulte un PATHqui ne contient pas les dossiers de tels programmes, à savoir:

/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

Au lieu de cela, vous devriez plutôt ajouter /sbin à votre propre nom PATHname__.

Comment ajouter /sbin à PATHname __

Comme PATHest en principe toujours dans l'environnement, vous n'avez pas besoin de l'exporter, il vous suffit d'ajouter le répertoire /sbin. Pour ce faire, vous pouvez exécuter dans votre bash

PATH="$PATH:/sbin"

votre chemin devrait maintenant ressembler à quelque chose comme ça:

/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

Cette modification ne sera toutefois pas permanente. Une fois que vous aurez fermé votre session en cours, PATHsera rechargé avec la valeur précédente. Afin de le rendre permanent, vous devez ajouter cette modification à votre fichier ~/.profile. Une façon de le faire est la suivante:

echo 'PATH="$PATH:/sbin"' >> ~/.profile

Vous devez maintenant exécuter le contenu de "~/.profile" dans le shell actuel.

source ~/.profile

Vous êtes prêt à partir, non seulement de votre shell actuel, mais de toutes vos futures sessions du nom PATHcontenant le répertoire.

Pourquoi ai-je utilisé ~/.profile au lieu de ~/.bashrc?

Ce concept peut vous être utile:

  • ~/.profile est l'endroit où placer les éléments qui s'appliquent à l'ensemble de votre session, tels que les programmes que vous souhaitez démarrer lorsque vous vous connectez (mais pas les programmes graphiques, ils sont placés dans un fichier différent), et
    Définitions des variables d'environnement.

  • ~/.bashrc est l'endroit où placer les éléments qui s'appliquent uniquement à bash, tels que les définitions d'alias et de fonctions, les options du shell et les paramètres d'invite. (Vous pouvez aussi y mettre des raccourcis clavier, mais pour bash, ils vont normalement dans ~/.inputrc.)

Vous ne pouvez pas obtenir plus d'informations sur ce sujet ici.

Si vous avez /sbin dans votre PATHname __?

Je ne discuterai pas ici si /sbin devrait ou ne devrait pas figurer dans PATHpar défaut, car cela pourrait ne pas être une discussion très productive à avoir ici. Je l'ai, tu peux l'avoir si tu veux. Ton appel.