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?
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
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é.
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.
/ 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
Qu'est-ce que PATH
name__variable?
PATH
est 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 PATH
qui 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 PATH
name__.
Comment ajouter /sbin
à PATH
name __
Comme PATH
est 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, PATH
sera 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 PATH
contenant 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 PATH
name __?
Je ne discuterai pas ici si /sbin
devrait ou ne devrait pas figurer dans PATH
par 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.