ejemplos - ¿Cómo establecer permanentemente $ PATH en Linux/Unix?
comandos shell linux (20)
Agregue a la carpeta /etc/profile.d
script [name_of_script].sh
con línea: export PATH=$PATH:/dir
. Cada script en la carpeta /etc/profile.d
se ejecuta automáticamente por /etc/profile
al iniciar sesión.
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 del 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?
Creo que la forma más elegante es:
1.add esto en el archivo ~. / Bashrc
if [ -d "new-path" ]; then
PATH=$PATH:new-path
fi
2.source ~ / .bashrc
(Ubuntu)
Creo que la forma más elegante es:
1.add esto en el archivo ~ / .bashrc Ejecuta este comando
gedit ~ / .bashrc
agrega tu camino en su interior
export PATH = $ PATH: / opt / node / bin
2.source ~ / .bashrc
(Ubuntu)
En Ubuntu, edite /etc/environment
. Su único propósito es almacenar variables de entorno. Originalmente, la variable $ PATH se define aquí. Esto es una pasta de mi /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
ACTUALIZAR:
Si usa zsh
(también conocido como Shell Z), agregue esta línea justo después de los comentarios en /etc/zsh/zshenv
:
source /etc/environment
Encontré este pequeño capricho en Ubuntu 15.10, pero si su zsh no está obteniendo el PATH correcto, esta podría ser la razón
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
-
/etc/environment
Lista de tareas únicas. Perfecto para agregar directorios de todo el sistema como/usr/local/something/bin
a la variablePATH
o definirJAVA_HOME
. -
/etc/xprofile
script de shell se ejecuta al iniciar la 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 entradasPATH
que son válidas para todos los usuarios como/usr/local/something/bin
. El archivo está incluido en otra secuencia de comandos, así que use la sintaxis de shell POSIX no la sintaxis de su shell de usuario. -
/etc/profile
y/etc/profile.d/*
script de shell. Esta es una buena opción para sistemas de solo shell. Esos archivos son leídos solo por shells. -
/etc/<shell>.<shell>rc
. Script de shell Esta es una mala elección porque es un shell específico.
Sesion de usuario
-
~/.pam_environment
. Lista de tareas únicas. Cargado por PAM al inicio de cada sesión de usuario irrelevante si es una sesión o shell de X Window System. No puede hacer referencia a otra variable, comoHOME
oPATH
por lo que tiene un uso limitado. -
~/.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. La opción perfecta para extenderPATH
con valores como~/bin
o~/go/bin
o definirGOPATH
oNPM_HOME
específicos del usuario. El archivo está incluido en otra secuencia de comandos, así que use la sintaxis de shell POSIX no la sintaxis de su shell de usuario. Su editor de texto gráfico o IDE iniciado por acceso directo verá esos valores. -
~/.profile
Shell script. Solo será visible para los programas iniciados desde el terminal o el emulador de terminal. Es una buena opción para sistemas de solo shell. -
~/.<shell>rc
. Script de shell Esta es una mala elección porque es un shell específico.
Documentación específica de distribución.
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
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.
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í.
Mi respuesta se refiere a la configuración de go-lang
en Ubuntu linux/amd64
. Me he enfrentado al mismo problema de configurar la ruta de las variables de entorno ( GOPATH
y GOBIN
), perdiéndola en la salida del terminal y reconstruyéndola utilizando la source <file_name>
cada vez. El error fue colocar 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 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 shells de inicio de sesión desde el archivo ~/.bash_profile
, y desde el archivo ~/.profile
si el archivo ~/.bash_profile
es inaccesible.
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
Ponga la declaración de export
en ~/.bashrc
. Mi .bashrc contiene esto:
export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
Puede agregar esa línea a su archivo de configuración de la consola (por ejemplo, .bashrc), o a .profile
Puede establecer $PATH
permanentemente de 2 maneras.
Para establecer la ruta de acceso para un usuario en particular: Es posible que deba hacer la entrada en
.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
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
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 vuelve a cargar el # User specific environment and startup programs
este comentario está presente en .bash_profile
Se puede agregar directamente usando el siguiente comando:
echo ''export PATH = $ PATH: / new / directory'' >> ~ / .zshrc source ~ / .zshrc
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 variables .
Extraído de: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html
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 según su configuración / reinicie su computadora y aquí vamos por la ruta ¿Habrá permanentemente vítores?
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
~/.profile
agregarlo a su ~/.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 binarios:
cd /usr/bin
sudo ln -s /path/to/binary binary-name
Tenga en cuenta que esto no actualizará automáticamente su ruta para el resto de la sesión. Para hacer esto, debes ejecutar:
source ~/.profile
or
source ~/.bashrc
Añadir 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 reinicio global . Para el inicio de sesión 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 de exportación es probablemente inútil ya que la variable PATH es muy probable que ya esté marcada como exportada. - gniourf_gniourf