Las cosas simples
PATH=$PATH:~/opt/bin
o
PATH=~/opt/bin:$PATH
dependiendo de si desea agregar ~/opt/bin
al final (para buscar 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 de todos los demás directorios).
Puede agregar varias entradas al mismo tiempo. PATH=$PATH:~/opt/bin:~/opt/node/bin
o variaciones en el orden funcionan bien. No coloque export
al comienzo de la línea ya que tiene complicaciones adicionales (consulte más abajo en "Notas sobre los depósitos que no sean bash").
Si PATH
se compila por muchos componentes diferentes, puede terminar con entradas duplicadas. Consulte ¿Cómo agregar la ruta del directorio de inicio para que Unix descubra qué comando? y Eliminar entradas duplicadas de $ PATH con el comando awk para evitar agregar duplicados o eliminarlos.
Algunas distribuciones se colocan automáticamente ~/bin
en su RUTA si existe, por cierto.
Donde ponerlo
Ponga la línea de modificar PATH
en ~/.profile
, o ~/.bash_profile
si eso es lo que tiene.
Tenga en cuenta que ~/.bash_rc
ningún programa lo lee y ~/.bashrc
es el archivo de configuración de instancias interactivas de bash. No debe definir variables de entorno en ~/.bashrc
. El lugar correcto para definir variables de entorno como PATH
es ~/.profile
(o ~/.bash_profile
si no le importan los shells que no sean bash). Vea ¿Cuál es la diferencia entre ellos y cuál debo usar?
No lo pongas /etc/environment
o ~/.pam_environment
: estos no son archivos de shell, no puedes usar sustituciones como $PATH
allí. En estos archivos, solo puede anular una variable, no agregarla.
Posibles complicaciones en algunos scripts del sistema
No es necesario export
si la variable ya está en el entorno: cualquier cambio en el valor de la variable se refleja en el entorno. PATH
¹ es casi siempre en el entorno; todos los sistemas unix lo configuraron desde el principio (de hecho, generalmente en el primer proceso).
En el momento de iniciar sesión, puede confiar en PATH
que ya está en el entorno y que ya contiene algunos directorios del sistema. Si estás escribiendo un guión que puede ser ejecutado temprana, mientras que la creación de algún tipo de entorno virtual, es posible que necesite para asegurarse de que PATH
no está vacío y se exportan: si PATH
todavía está desactivada, entonces algo así PATH=$PATH:/some/directory
sería ajustado PATH
a :/some/directory
, y el componente de 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 conchas 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
hacer lo correcto, incluso. En otros shells de estilo Bourne / POSIX, como el guión (que se encuentra /bin/sh
en muchos sistemas), export
se analiza como un comando ordinario, lo que implica dos diferencias:
Entonces, en shells como el guión, se export PATH=~/opt/bin:$PATH
establece PATH
en la cadena literal ~/opt/bin/:
seguida del valor de PATH
hasta el primer espacio.
PATH=~/opt/bin:$PATH
(una asignación simple) no requiere comillas y hace lo correcto. Si desea usar export
en un script portátil, necesita escribir export PATH="$HOME/opt/bin:$PATH"
, o PATH=~/opt/bin:$PATH; export PATH
(o PATH=$HOME/opt/bin:$PATH; export PATH
para portabilidad incluso en el shell Bourne que no aceptó export var=value
y no hizo una expansión de tilde).
¹ Esto no era cierto en los proyectiles Bourne (como en el proyectil Bourne real, no en los proyectiles modernos de estilo POSIX), pero es muy poco probable que se encuentren con proyectiles tan viejos en estos días.