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);
- $PATHfuera de las comillas dobles se rompe si- PATHcontiene espacios en blanco o- [*?.
 Entonces, en shells como dash, export PATH=~/opt/bin:$PATH 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).
¹ 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.