it-swarm-es.com

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

Estoy tratando de agregar un directorio a mi ruta para que siempre esté 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 terminal, esta ruta se pierde y necesito ejecutar el comando de exportación nuevamente.

¿Cómo puedo hacerlo para que esto se establezca de forma permanente?

781
Click Upvote

Debe agregarlo a su archivo ~/.profile o ~/.bashrc.

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

Dependiendo de lo que estés haciendo, es posible que también quieras un enlace simbólico 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 por el resto de la sesión. Para hacer esto, debes ejecutar:

source ~/.profile 
or
source ~/.bashrc
884
mpowered

En Ubuntu, edite /etc/environment. Su único propósito es almacenar variables de entorno. Originalmente, la variable $ PATH se define aquí. Esto es un pegado de mi archivo /etc/environment:

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

Así que puedes abrir este archivo como root y agregar lo que quieras.

Para resultados inmediatos, Ejecutar (intente como usuario normal y root):

source /etc/environment && export PATH

ACTUALIZACIÓN:

Si usa zsh (a.k.a 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 correcta RUTA, esta podría ser la razón por la que

220
trve.fa7ad

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

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

Todo el sistema

  1. /etc/environment Lista de asignaciones únicas. Perfecto para agregar directorios de todo el sistema como /usr/local/something/bin a PATH variable o definir Java_HOME.
  2. /etc/xprofile Shell script ejecutado al iniciar sesión de X Window System. Esto se ejecuta para todos los usuarios que inician sesión en X Window System. Es una buena opción para PATH entradas que son válidas para todos los usuarios como /usr/local/something/bin. El archivo está incluido en otra secuencia de comandos, por lo tanto, use la sintaxis de POSIX Shell, no la sintaxis de su usuario Shell.
  3. /etc/profile y /etc/profile.d/* Shell script. Esta es una buena opción para los sistemas de solo Shell. Esos archivos son leídos solo por shells.
  4. /etc/<Shell>.<Shell>rc. Shell script. Esta es una mala elección porque es específica de Shell.

Sesion de usuario

  1. ~/.pam_environment. Lista de tareas únicas. Cargado por PAM al inicio de cada sesión de usuario irrelevante si se trata de una sesión del Sistema X Window o Shell. No puede hacer referencia a otra variable, incluyendo HOME o PATH, por lo que tiene un uso limitado.
  2. ~/.xprofile Shell script. 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. La opción perfecta para extender 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, use la sintaxis de POSIX Shell, no la sintaxis de su usuario Shell. Su editor de texto gráfico o IDE iniciado por acceso directo verá esos valores.
  3. ~/.profile Shell script. Solo será visible para los programas iniciados desde el terminal o el emulador de terminal. Es una buena opción para los sistemas de solo Shell.
  4. ~/.<Shell>rc. Shell script. Esta es una mala elección porque es específica de Shell.

Documentación específica de distribución.

132
Grzegorz Żur

Ponga la declaración export en ~/.bashrc. Mi .bashrc contiene esto:

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

Puede establecer $PATH permanentemente de 2 maneras.

  1. Para establecer la ruta de acceso para un usuario en particular: Es posible que deba ingresar el .bash_profile en el directorio de inicio del usuario.

    por ejemplo, en mi caso, estableceré la ruta de Java en el perfil de usuario de 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 necesite establecer una ruta como esta:

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

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 tendrá efecto 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 a su archivo de configuración de la consola (por ejemplo, .bashrc), o a .profile

6
aqua

Creo que la forma más elegante es:

1.add esto en el archivo ~/.bashrc Ejecute este comando

gedit ~/.bashrc

agrega tu camino en su interior 

export PATH = $ PATH:/opt/node/bin

2.source ~/.bashrc

(Ubuntu)

6
Himanshu sharma

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

/etc/profile (para todos los usuarios)

~/.bash_profile (para el usuario actual)

~/.bash_login (para el usuario actual)

~/.profile (para el usuario actual)

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

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

6
Delucaramos

Me encontré con esta pregunta ayer al buscar una manera de agregar una carpeta que contenga mis propios scripts a la RUTA, 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 mis scripts allí.

5
RobertG

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

si está en modo de inicio de sesión, los archivos que busca 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 son donde están las variables del sistema.

3
Dikinha

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 agregar permanentemente a $ PATH:

Sudo nano /etc/profile

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

3
Joe D

Mi respuesta es en referencia a la configuración de go-lang en Ubuntu linux/AMD64. He enfrentado el mismo problema de configurar la ruta de las variables de entorno (GOPATH y GOBIN), perdiéndola en la salida del terminal y reconstruyéndola usando el source <file_name> cada vez. El error era poner la ruta (GOPATH y GOBIN) en la carpeta ~/.bash_profile. Después de perder algunas buenas horas, encontré 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 trayectoria. 

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

3
Abhiroj Panwar

Agregue a /etc/profile.d folder script [name_of_script].sh con la línea: export PATH=$PATH:/dir. Cada script dentro de la carpeta /etc/profile.d es ejecutado automáticamente por /etc/profile al iniciar sesión.

2
Iurii

Agregar permanentemente la variable PATH

Global:

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

Local (solo para usuarios):

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

Para global reiniciar. Para local relogin.

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, solo puedes 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 de exportación es probablemente inútil ya que la variable PATH es muy probable ya marcado como exportado. - gniourf_gniourf

2
user3439968

Creo que la forma más elegante es:

1.add esto en ~./Bashrc file

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

2.source ~/.bashrc

(Ubuntu)

1
Gimcuan Hui

Instalación rápida utilizando Homebrew

ver esto video

pasos abajo

Step 1:

Abrir https://brew.sh/

 enter image description here

Copiar laURLque se mostró en la captura de pantalla arriba

/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Pegar copiadoURLen el terminal y presionar regresar/ingresar tecla

Una vez que haya hecho con Instalación de Homebrew siga Paso 2:

Step 2: Descargar terraform from https://www.terraform.io/downloads.html

extraer descargado archivo Zip terraform  

Ahora tendrá un nombre de archivo terraform en la carpeta descargada

Por ejemplo

/Users/username/downloads/terraform

Step 3:

Abre una terminal

cd: cambia el directorio a /Users/username/downloads/terraform

Step 4:

ejecuta brew install terraform en el terminal

1
Munish Kapoor

la mejor manera simple es la siguiente línea:
PATH="<directory you want to include>:$PATH"
en su archivo .bashrc en el directorio de inicio.
No se restablecerá incluso si cierra el terminal o reinicia su PC. Es permanente

1
Edward Torvalds

Para la distribución de Debian, tienes que:

    - edit ~/.bashrc  e.g: 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
0
onlyme

una forma de agregar una ruta permanente, que funcionó para mí, es: cd /etc/profile.d touch custom.sh vi custom.sh export PATH = $ PATH:/path de acuerdo con su configuración/icono de la imagen […]. Reinicie su computadora y aquí vamos a la ruta, habrá Vítores permanentes.

0
user6393373

1.modificar el archivo "/ etc/profile".

#vi /etc/profile

Presione la tecla "i" para ingresar al estado de edición y mover el cursor al final del archivo, Entradas adicionales :

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

Presione la tecla "Esc" para salir del estado de edición, ': wq' guardar el archivo.

2. Hacer la configuración efectiva

source /etc/profile

Explique : El archivo de perfil funciona para todos los usuarios, si desea ser válido solo para el usuario activo, configure el archivo ".bashrc"

0
Jia