GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo agregar correctamente una ruta a la ruta?

Me pregunto dónde se debe agregar una nueva ruta a PATH Variable ambiental. Sé que esto se puede lograr editando .bashrc (por ejemplo), pero no está claro cómo hacerlo.

De esta manera:

export PATH=~/opt/bin:$PATH

o esto?

export PATH=$PATH:~/opt/bin

Respuesta aceptada:

Las cosas simples

PATH=$PATH:~/opt/bin

o

PATH=~/opt/bin:$PATH

dependiendo de si desea agregar ~/opt/bin al final (para buscar después de todos los demás directorios, en caso de que haya un programa con el mismo nombre en varios directorios) o al principio (para buscar antes que todos los demás directorios).

Puede agregar varias entradas al mismo tiempo. PATH=$PATH:~/opt/bin:~/opt/node/bin o las variaciones en el trabajo de pedidos muy bien. No ponga export al comienzo de la línea, ya que tiene complicaciones adicionales (consulte a continuación en "Notas sobre shells que no sean bash").

Si su PATH se construye con muchos componentes diferentes, es posible que termine con entradas duplicadas. Consulte Cómo agregar la ruta del directorio de inicio para que Unix la descubra, ¿qué comando? y elimine las entradas duplicadas de $PATH con el comando awk para evitar agregar duplicados o eliminarlos.

Algunas distribuciones colocan automáticamente ~/bin en tu RUTA si existe, por cierto.

Dónde ponerlo

Poner la línea para modificar PATH en ~/.profile , o en ~/.bash_profile si eso es lo que tienes.

Tenga en cuenta que ~/.bash_rc no es leído por ningún programa, y ​​~/.bashrc es el archivo de configuración de instancias interactivas de bash. No debe definir variables de entorno en ~/.bashrc . El lugar adecuado para definir variables de entorno como PATH es ~/.profile (o ~/.bash_profile si no te importan los shells que no sean bash). Consulte ¿Cuál es la diferencia entre ellos y cuál debo usar?

No lo pongas en /etc/environment o ~/.pam_environment :estos no son archivos shell, no puede usar sustituciones como $PATH ahí. En estos archivos, solo puede anular una variable, no agregarla.

Posibles complicaciones en algunos scripts del sistema

No necesitas export si la variable ya está en el entorno:cualquier cambio del valor de la variable se refleja en el entorno.¹ PATH está casi siempre en el medio ambiente; todos los sistemas Unix lo configuran muy pronto (de hecho, generalmente en el primer proceso).

En el momento de iniciar sesión, puede confiar en PATH ya está en el entorno y ya contiene algunos directorios del sistema. Si está escribiendo una secuencia de comandos que puede ejecutarse temprano mientras configura algún tipo de entorno virtual, es posible que deba asegurarse de que PATH no está vacío y exportado:si PATH todavía no está configurado, entonces algo como PATH=$PATH:/some/directory establecería PATH a :/some/directory , y el componente vacío al principio significa el directorio actual (como .:/some/directory ).

if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi

Notas sobre shells que no sean bash

En bash, ksh y zsh, export es una sintaxis especial, y ambos PATH=~/opt/bin:$PATH y export PATH=~/opt/bin:$PATH incluso hacer lo correcto. En otros shells de estilo Bourne/POSIX como dash (que es /bin/sh en muchos sistemas), export se analiza como un comando ordinario, lo que implica dos diferencias:

  • ~ solo se analiza al comienzo de una palabra, excepto en las asignaciones (consulte Cómo agregar la ruta del directorio de inicio para que Unix la descubra, ¿qué comando? para obtener más detalles);
  • $PATH fuera de las comillas dobles se rompe si PATH contiene espacios en blanco o [*? .

Entonces, en shells como dash, export PATH=~/opt/bin:$PATH establece PATH a la cadena literal ~/opt/bin/: seguido del valor de PATH hasta el primer espacio. PATH=~/opt/bin:$PATH (una tarea simple) no requiere comillas y hace lo correcto. Si desea utilizar export en un script portátil, debe escribir export PATH="$HOME/opt/bin:$PATH" , o PATH=~/opt/bin:$PATH; export PATH (o PATH=$HOME/opt/bin:$PATH; export PATH para la portabilidad incluso al shell Bourne que no aceptaba export var=value y no hizo expansión de tilde).

Relacionado:Centos:¿por qué no se instala la nueva versión correcta de Node.js en CentOS 7?

¹ Esto no era cierto en los shells de Bourne (como en el shell de Bourne real, no en los shells de estilo POSIX modernos), pero es muy poco probable que encuentre shells tan antiguos en estos días.


Linux
  1. Cómo agregar un directorio a PATH en Linux [con ejemplos]

  2. Cómo agregar un repositorio de Yum

  3. ¿Cómo agregar limpiamente a $path?

  4. ¿Cómo podría agregar dir a $PATH en Makefile?

  5. ¿Cómo agregar Chromedriver a PATH en Linux?

Cómo agregar un directorio a PATH en Linux

Cómo agregar almacenamiento externo a ownCloud 9

Cómo agregar un directorio a PATH en Linux [Consejo rápido]

Cómo agregar una ruta en Linux

Cómo agregar un archivo de intercambio en Ubuntu 20.04

Linux:agregar un directorio a PATH