Mi pregunta está relacionada con otra abierta.pregunta. Mi echo $PATH me da una salida que es como
/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/
pero corriendo
ifconfig
me da una salida como
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
después de ejecutar el comando como se indica en otra pregunta
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
correifconfigpero bloquea otros comandos de Ruby Rails o RVM.
Buscando ayuda sobre cómo resolver esto. ¿Y por qué sucede esto también?
Respuesta1
Pruebe el siguiente comando
export PATH=$PATH:/usr/sbin
O (si desea configurar todas las rutas)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
Respuesta2
Su original $PATH
(la línea que publicó no es muy legible):
/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/
Tienes /usr/local/bin
, /usr/bin
y /bin
. Como ya habrás descubierto ifconfig
está dentro /sbin
.
Entonces, donde se establece esa ruta también debes incluirla /sbin
.
Verrubíesdocumentos sobre cómo hacer esto.
Respuesta3
/sbin normalmente es parte de la ruta. Otras distribuciones como Fedora no lo tienen en PATH para usuarios normales, pero creo que Ubuntu siempre lo tiene. Le sugeriré que revise su archivo /etc/environment y vea si es válido y si tiene /sbin agregado a la ruta. cuando corrogato /etc/entorno, obtengo el siguiente resultado:
adnan@adnan-laptop:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Como se puede ver/sbinya es parte de la variable de entorno PATH. Si su archivo tiene el mismo contenido, verifique sus permisos; de lo contrario, agregue /sbin a la RUTA de este archivo. Para mi los permisos son:
adnan@adnan-laptop:~$ ls -l /etc/environment
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
Respuesta4
¿Cuál es la PATH
variable?
PATH
es una lista de rutas de directorio. Cuando el usuario escribe un comando sin proporcionar la ruta completa, se verifica esta lista para ver si contiene una ruta que conduzca al comando. El orden de las rutas en esta variable indica el orden en el que se buscará el comando, en caso de que exista un programa con el mismo nombre en varios directorios se buscará el ubicado en la carpeta más cercana al inicio de la lista (lado izquierdo). ejecutado.
La razón por la que bloqueaste otros comandos (de Ruby Rails y rvm) es porque ejecutaste esto:
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
dando como resultado un PATH
queno contienelas carpetas de dichos programas, a saber:
/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
Lo que deberías hacer en su lugar es agregarlo /sbin
a tu propio archivo PATH
.
como agregar /sbin
aPATH
Como PATH
básicamente siempre está en el entorno, no es necesario exportarlo, solo necesita agregarle el /sbin
directorio. Para hacer eso puedes ejecutar en tu bash
PATH="$PATH:/sbin"
tu camino ahora debería verse así:
/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
Sin embargo, este cambio no será permanente; una vez que cierre su sesión actual, PATH
se recargará con el valor anterior. Para hacerlo permanente, debe agregar este cambio a su ~/.profile
archivo. Una forma de hacerlo es la siguiente:
echo 'PATH="$PATH:/sbin"' >> ~/.profile
Ahora sólo necesita ejecutar el contenido de "~/.profile" en el shell actual.
source ~/.profile
Está listo para comenzar, no solo su shell actual sino todas sus sesiones futuras tendrán el PATH
directorio que contiene.
¿Por qué utilicé ~/.profile en lugar de ~/.bashrc?
Este concepto puede resultarte útil:
~/.profile
es el lugar para colocar cosas que se aplican a toda su sesión, como programas que desea iniciar cuando inicia sesión (pero no programas gráficos, van a un archivo diferente) y
definiciones de variables de entorno.
~/.bashrc
es el lugar para colocar cosas que se aplican sólo al propio bash, como definiciones de alias y funciones, opciones de shell y configuraciones de mensajes. (También puede colocar combinaciones de teclas allí, pero para bash normalmente van a ~/.inputrc).
No puedes obtener más información sobre este tema aquí.
¿Deberías tenerlo /sbin
en tu PATH
?
No voy a discutir aquí si /sbin
debería o no estar incluido PATH
de forma predeterminada porque puede resultar que no sea una discusión muy productiva que se pueda tener aquí. Lo tengo, puedes tenerlo si quieres. Tu llamada.