¿Qué es la variable RUTA de Unix y cómo se agrega?

11

Muchos tutoriales de programación solicitan a los usuarios que agreguen algo a su contenido, PATHpero no explican qué es. Los recursos existentes que explican PATHa los usuarios nuevos en la línea de comandos no son muy buenos.

  • ¿Qué es la PATHvariable Unix ?

  • Acabo de descargar un programa, luego intenté ejecutar un comando en la terminal y lo obtuve command not found. ¿Qué tiene esto que ver con el PATH?

  • Agregué algo al PATHcon este comando y luego las cosas funcionaron:

    export PATH=/path/to/some/bin:$PATH
    

    ... pero luego volví a tener command not foundla próxima vez que encendí mi computadora. ¿Cómo puedo hacer que permanezca encendido PATHcada vez que abro la Terminal?

  • ¿Cuál es la mejor manera de determinar si un programa como Git o gccya está cargado en mi computadora?

Kevin Burke
fuente
3
He leído muchas de las respuestas sobre SO y no he encontrado una respuesta que responda a todas estas preguntas de una manera que un novato pueda entender. Quiero algo con lo que pueda vincular a los nuevos usuarios de la línea de comandos. Tenía la esperanza de agregar esto como wiki de la comunidad y darle una recompensa significativa.
Kevin Burke
44
Apuesto a que puedo encontrar 50 resultados si busco en Google esta pregunta. ¿Por qué no puedes?
trojanfoe
2
Y si ninguno de esos enlaces apunta a SO para una pregunta que califica para estar aquí, entonces debe agregarse aquí. Queremos que SO esté donde Google vaya para las preguntas de programación.
Consulte esta publicación de MSO para conocer las motivaciones de Kevin al hacer esta pregunta. Lo más probable es que haga una edición para aclarar cómo es útil esta información.
jmort253
1
@ jmort253: Bueno, debería comenzar a hacerlo rápidamente. 4/5 votos cerrados. No cerraré porque sé que quiere editar la pregunta, pero será mejor que lo haga rápido.
El fantasma de Madara

Respuestas:

17

La ruta UNIX es una variable de entorno que es una lista de directorios en los que buscar los programas que está intentando ejecutar. Le permite evitar tener que usar el nombre de ruta completo para ejecutar cosas como /bin/ls(por ejemplo, colocando /binla ruta).

Por ejemplo, una ruta puede consistir en:

/bin:/usr/bin:/usr/sbin

y eso significa que, cuando escribe el comando xyzzy, intentará ejecutar el primer archivo que encuentre de la lista actual:

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

( puede omitir archivos no ejecutables si es inteligente).

Puede agregar cosas a la ruta con un comando como:

set PATH=/directory/to/add:$PATH:/low/priority/path

que se coloca /directory/to/addal comienzo de la lista de búsqueda de ruta y /low/priority/pathal final.

Sin embargo, esto generalmente solo cambia para el shell actual . Si desea realizar un cambio en cada shell, debe agregar esa línea a uno de sus archivos de inicio, como $HOME/.profileo /etc/profile. El archivo correcto a utilizar depende de su propio shell y de cómo ha configurado los archivos de inicio. No siempre es fácil saber a dónde debe ir, pero las reglas generalmente se explican en la página de manual de cualquier shell que esté utilizando.

Por lo general, puede encontrar un comando en la ruta con uno de:

which cmd
whence cmd

para localizar el cmdejecutable. Por ejemplo, en mi sistema Debian, obtengo la siguiente transcripción:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

fuente
1
¿Esta pregunta pertenece a stackoverflow?
trojanfoe
@trojanfoe, tanto como cualquier pregunta relacionada con shell, sí, creo que sí. También es un lenguaje de programación.
Modifiqué la respuesta para usarla :como separador, como se usa en * nix. Windows usa ;(probablemente porque :ya tiene un significado C:).
Joachim Sauer
En realidad, @Joachim, posiblemente sea más correcto decir que un shell determinado (en lugar de UNIX) tiene un separador de directorio específico, pero tiene razón para todos los que uso en la parte superior de mi cabeza. Gracias por la solución, saludos.
@paxdiablo: sí, pensé en eso pero tampoco puedo pensar en ningún shell de Unix que no use :(en Java, por ejemplo, path.separatorsiempre está :en * nix).
Joachim Sauer
5

¿Que es?

La variable de entorno PATH es una lista delimitada por dos puntos de directorios que su shell busca cuando ingresa un comando.

¿Cómo configurarlo?

PATH=$PATH:/your/directory
export PATH

¿Cómo puedo hacer que permanezca en la RUTA cada vez que abro la Terminal?

Ponga las dos líneas anteriores dentro ~/.bash_profile(si está utilizando bashpara la Terminal).

Pigueiras
fuente
3

PATH es una variable de entorno para sistemas similares a Unix.

establecer ruta:

export PATH=$PATH:<your path>

ruta sin configurar:

unset $PATH

establecer ruta de forma permanente

en su carpeta de inicio, habilite Ver -> Mostrar archivos ocultos .... pen .bash_profile file, antes de exportar la línea PATH, agregue esta línea .....

PATH=$PATH:<yourpath>

cerrar sesión y volver a iniciar sesión ... verifique si funciona ... ¡bien! deberia de funcionar.....

Shantanu Banerjee
fuente
1
Perdón por el voto negativo, pero está mal formateado y redactado. Trate de evitar el uso excesivo de negrita, el uso excesivo de puntos suspensivos ("...") y escriba oraciones completas. Eso debería ayudar a evitar tales votos negativos en el futuro.
Joachim Sauer
1
@Joachim Sauer, ¿por qué no editas la respuesta? ¿Por qué prefieres denunciarlo?
1
@MikroDel: porque ya hay respuestas mejores y de mayor calidad a esta pregunta, y la votación negativa requiere menos esfuerzo. Si esta fuera la única respuesta, probablemente la habría editado. Además: aunque generalmente no son divertidos, los votos negativos son herramientas legítimas (sí, hay flechas arriba y abajo al lado de cada pregunta / respuesta).
Joachim Sauer
1
editar o publicar este comentario toma casi al mismo tiempo, pero editar lo hace mejor y ayuda a Shantanu Banerjee y otros usuarios
@MikroDel: ¿explicar el razonamiento detrás de un voto negativo no ayuda al usuario? Creo que he sido bastante claro en mi razonamiento y he dado consejos prácticos para mejorar la calidad. Lo único que hace su insistencia es que reduzca mi disposición a explicar mis votos negativos (y como puede ver en mi perfil, no voto negativamente en exceso).
Joachim Sauer