¿Cómo establecer permanentemente $ PATH en Linux / Unix?

Estoy tratando de agregar un directorio a mi ruta, por lo que siempre estará en mi ruta de Linux. He intentado:

export PATH=$PATH:/path/to/dir 

Esto funciona, sin embargo, cada vez que salgo de la terminal y comienzo una nueva instancia de la terminal, esta ruta se pierde y necesito ejecutar nuevamente el comando de exportación.

¿Cómo puedo hacerlo así que esto se establecerá de forma permanente?

~/.profile agregarlo a su ~/.profile o ~/.bashrc file.

 export PATH="$PATH:/path/to/dir" 

Dependiendo de lo que esté haciendo, también puede querer enlazar simbólicamente a los binarios:

 cd /usr/bin sudo ln -s /path/to/binary binary-name 

Tenga en cuenta que esto no actualizará automáticamente su ruta durante el rest de la sesión. Para hacer esto, debes ejecutar:

 source ~/.profile or source ~/.bashrc 

No puedo creer que nadie haya mencionado el /etc/environment . Su único propósito es almacenar variables de entorno. Originalmente, la variable $ PATH se define aquí. Esta es una pega de mi /etc/environment :

 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" 

Entonces puede abrir este archivo como root y agregar lo que desee.

Para resultados inmediatos, ejecute (intente como usuario normal y raíz):

 source /etc/environment && export PATH 

ACTUALIZAR:

Si usa zsh (también conocido como Z Shell), agregue esta línea justo después de los comentarios en /etc/zsh/zshenv :

 source /etc/environment 

Encontré esta pequeña peculiaridad en Ubuntu 15.10, pero si su zsh no está obteniendo la ruta correcta, esta podría ser la razón por la cual

Hay múltiples formas de hacerlo. La solución real depende del propósito.

Los valores de las variables generalmente se almacenan en una lista de asignaciones o en un script de shell que se ejecuta al inicio del sistema o de la sesión del usuario. En el caso del script de shell, debe usar una syntax de shell específica.

Sistema completo

  1. /etc/environment Lista de asignaciones únicas. Perfecto para agregar directorios de todo el sistema como /usr/local/something/bin a la variable PATH o definir JAVA_HOME .
  2. /etc/xprofile Script de Shell ejecutado al iniciar la sesión de X Window System. Esto se ejecuta para cada usuario que inicia sesión en X Window System. Es una buena opción para las entradas PATH que son válidas para cada usuario como /usr/local/something/bin . El archivo está incluido en otra secuencia de comandos, por lo tanto, utilice la syntax de shell POSIX, no la syntax de su shell de usuario.
  3. /etc/profile y /etc/profile.d/* Shell script. Esta es una buena opción para sistemas de solo shell. Esos archivos son leídos solo por shells.
  4. /etc/.rc . Guión de shell Esta es una opción pobre porque es solo un shell específico.

Sesión de usuario

  1. ~/.pam_environment . Lista de asignaciones únicas. Cargado por PAM al inicio de cada sesión de usuario, irrelevante si se trata de una sesión o shell de X Window System. No puede hacer referencia a otras variables, incluidas HOME o PATH por lo que tiene un uso limitado.
  2. ~/.xprofile Script de Shell. Esto se ejecuta cuando el usuario inicia sesión en el sistema X Window System. Las variables definidas aquí son visibles para cada aplicación X. Opción perfecta para ampliar PATH con valores como ~/bin o ~/go/bin o definir GOPATH o NPM_HOME específicos del usuario. El archivo está incluido en otra secuencia de comandos, por lo tanto, utilice la syntax de shell POSIX, no la syntax de su shell de usuario. Su editor de texto gráfico o IDE iniciado por atajo verá esos valores.
  3. ~/.profile Script de Shell. Será visible solo para progtwigs iniciados desde emulador de terminal o terminal. Es una buena opción para sistemas de solo shell.
  4. ~/.rc . Guión de shell Esta es una opción pobre porque es solo un shell específico.

Documentación específica de distribución

  • Ubuntu
  • archlinux

Coloque la statement de export en ~/.bashrc . Mi .bashrc contiene esto:

 export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH 

Puede establecer $PATH permanente de 2 formas.

  1. Para establecer la ruta para un usuario en particular: es posible que deba realizar la entrada en .bash_profile en el directorio de inicio en el usuario.

    por ejemplo, en mi caso estableceré la ruta de acceso de java en el perfil de usuario tomcat

     [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile 
  2. Para establecer una ruta común para TODOS los usuarios del sistema, es posible que deba establecer una ruta como esta:

     [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile 

Puede usar en Centos o RHEL para usuarios locales:

 echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile 

Esto agrega el directorio actual (o puede usar otro directorio) a la RUTA, esto lo hace permanente pero entra en vigor en el próximo inicio de sesión del usuario.

Si no desea volver a iniciar sesión, puede usar:

 source ~/.bash_profile 

Que vuelva a cargar el # User specific environment and startup programs este comentario está presente en .bash_profile

Puede agregar esa línea al archivo de configuración de la consola (por ejemplo, .bashrc) o a .profile

Creo que la manera más elegante es:

1.añadir esto en el archivo ~ / .bashrc Ejecutar este comando

gedit ~ / .bashrc

agrega tu camino dentro de él

PATH de exportación = $ PATH: / opt / node / bin

2.source ~ / .bashrc

(Ubuntu)

Me encontré con esta pregunta ayer cuando buscaba una manera de agregar una carpeta con mis propios scripts al PATH, y me sorprendió descubrir que mi propio archivo ~/.profile (en Linux Mint 18.1) ya contenía esto:

 # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi 

Por lo tanto, todo lo que tenía que hacer era crear la carpeta ~/bin y poner allí mis scripts.

los archivos en los que agrega el comando de exportación dependen si está en modo de inicio de sesión o modo no de inicio de sesión.

Si está en modo de inicio de sesión, los archivos que está buscando son / etc / bash o /etc/bash.bashrc

si no está en modo de inicio de sesión, está buscando el archivo /.profile o los archivos dentro del directorio /.profiles.d

los archivos mencionados anteriormente si están las variables del sistema.

Zues77 tiene la idea correcta. El OP no dijo “¿cómo puedo hackear mi camino a través de esto?” OP quería saber cómo anexar permanentemente a $ PATH:

 sudo nano /etc/profile 

Aquí es donde está configurado para todo y es el mejor lugar para cambiarlo por todas las cosas que necesitan $ PATH

También puede establecer permanentemente, editando uno de estos archivos:

/etc/profile (para todos los usuarios)

~/.bash_profile (para el usuario real)

~/.bash_login (para el usuario real)

~/.profile (para el usuario real)

También puede usar /etc/environment para establecer una variable de entorno PATH permanente, pero no admite la expansión de variables .

Extraído de: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html

Mi respuesta es en referencia a la instalación de go-lang en Ubuntu linux/amd64 . Me he enfrentado al mismo problema de establecer la ruta de las variables de entorno ( GOPATH y GOBIN ), perderlo en la salida de la terminal y reconstruirlo usando la source cada vez. El error fue poner la ruta ( GOPATH y GOBIN ) en la carpeta ~/.bash_profile . Después de perder algunas buenas horas, descubrí que la solución era poner GOPATH y GOBIN en el archivo ~/.bash_rc de la manera siguiente:

 export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOPATH:$GOBIN 

y al hacerlo, la instalación de go funcionó bien y no hubo pérdidas de ruta.

EDIT 1: El motivo por el que se puede relacionar este problema es que las configuraciones para shells que no son de inicio de sesión como su terminal ubuntu o gnome-terminal donde ejecutamos el código go se toman del archivo ~./bash_rc y se toman las configuraciones para los shells de inicio de sesión del archivo ~/.bash_profile , y del archivo ~/.profile si el archivo ~/.bash_profile está disponible.

Agregue permanentemente la variable PATH

Global:

 echo "export PATH=$PATH:/new/path/variable" >> /etc/profile 

Local (para el usuario solamente):

 echo "export PATH=$PATH:/new/path/variable" >> ~/.profile 

Para reinicio global . Para relogin local .

Ejemplo

Antes de:

 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin 

Después:

 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable 

Alternativamente, puedes simplemente editar el perfil:

 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable 

Otra forma (gracias gniourf_gniourf):

 echo 'PATH=$PATH:/new/path/variable' >> /etc/profile 

¡No deberías usar comillas dobles aquí! echo ‘export PATH = $ PATH: / new / path / variable’ … Y, por cierto, la palabra clave export es muy probablemente inútil ya que la variable PATH es muy probable que ya esté marcada como exportada. – gniourf_gniourf

Agregar al /etc/profile.d carpeta /etc/profile.d [name_of_script].sh con la línea: export PATH=$PATH:/dir . Cada script en la carpeta /etc/profile.d es ejecutado automáticamente por /etc/profile en el inicio de sesión.

la mejor manera simple es la siguiente línea:
PATH=":$PATH"
en su archivo .bashrc en el directorio de inicio.
No se restablecerá incluso si cierra la terminal o reinicia su PC. Su permanente

Creo que la manera más elegante es:

1.añadir esto en el archivo ~. / Bashrc

 if [ -d "new-path" ]; then PATH=$PATH:new-path fi 

2.source ~ / .bashrc

(Ubuntu)

Una forma de agregar una ruta permanente, que funcionó para mí, es: cd /etc/profile.d toque custom.sh vi custom.sh export PATH = $ PATH: / ruta según su configuración / reinicie su computadora y aquí vamos camino habrá aclamaciones permanentes.

Para la distribución Debian, usted tiene que:

  - edit ~/.bashrc eg: vim ~/.bashrc - add export PATH=$PATH:/path/to/dir - then restart your computer. Be aware that if you edit ~/.bashrc as root, your environment variable you added will work only for root 

Se puede agregar directamente usando el siguiente comando:

echo ‘export PATH = $ PATH: / new / directory’ >> ~ / .zshrc fuente ~ / .zshrc