Las cosas simples
PATH=$PATH:~/opt/bin
o
PATH=~/opt/bin:$PATH
dependiendo de si desea agregar ~/opt/binal 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/bino variaciones en el orden funcionan bien. No coloque exportal 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 PATHse 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 ~/binen su RUTA si existe, por cierto.
Donde ponerlo
Ponga la línea de modificar PATHen ~/.profile, o ~/.bash_profilesi eso es lo que tiene.
Tenga en cuenta que ~/.bash_rcningún programa lo lee y ~/.bashrces 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 PATHes ~/.profile(o ~/.bash_profilesi 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/environmento ~/.pam_environment: estos no son archivos de shell, no puedes usar sustituciones como $PATHallí. En estos archivos, solo puede anular una variable, no agregarla.
Posibles complicaciones en algunos scripts del sistema
No es necesario exportsi 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 PATHque 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 PATHno está vacío y se exportan: si PATHtodavía está desactivada, entonces algo así PATH=$PATH:/some/directorysería ajustado PATHa :/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, exportes una sintaxis especial, y ambos PATH=~/opt/bin:$PATHy export PATH=~/opt/bin:$PATHhacer lo correcto, incluso. En otros shells de estilo Bourne / POSIX, como el guión (que se encuentra /bin/shen muchos sistemas), exportse analiza como un comando ordinario, lo que implica dos diferencias:
Entonces, en shells como el guión, se export PATH=~/opt/bin:$PATHestablece PATHen la cadena literal ~/opt/bin/:seguida del valor de PATHhasta el primer espacio.
PATH=~/opt/bin:$PATH(una asignación simple) no requiere comillas y hace lo correcto. Si desea usar exporten 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 PATHpara portabilidad incluso en el shell Bourne que no aceptó export var=valuey 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.