¿Cómo modifico mi RUTA para que los cambios estén disponibles en cada sesión de Terminal?

53

Quiero agregar un directorio para buscar mi ruta de búsqueda. Sé que tengo que modificar la PATHvariable de entorno. Sin embargo, quiero que el cambio sea permanente, para que siempre esté vigente, para cada ventana de Terminal (bash) que abro.

Hay una sobrecarga de información confusa y posiblemente conflictiva en https://help.ubuntu.com/community/EnvironmentVariables

Estoy usando Ubuntu 10.04. Supongamos que quiero agregar /usr/local/fooa mi PATH. ¿Qué archivo ( .bashrc, .profile, .bash_login, etc ...) debería modificar y lo que debe la nueva línea (s) parece?

Joshua Flanagan
fuente

Respuestas:

70

El siguiente comando agrega una ruta a su ruta actual:

export PATH=$PATH:/my/custom/path

Si desea que su configuración ejecute este comando cada vez, hay varios lugares donde puede colocarlo. Cuando inicie sesión, los siguientes scripts se ejecutarán en este orden:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

Notas

  • ~/.profile solo se carga si ~/.bash_profiley ~/.bash_loginNO EXISTE. De lo contrario, al menos bash, los cargará en su lugar. Es aconsejable usar .profiley no los scripts específicos de bash. Entonces, si en estos intentos que creó .bash_login, elimínelo ahora.

  • ~/.bashrcsolo se carga si está ejecutando una sesión interactiva. (algo con un mensaje donde realmente puedes escribir algo).

  • ~/.bashrcse carga una y otra vez, cada vez que abre un nuevo terminal . Entonces, una nueva pestaña en gnome-terminal, una nueva terminal virtual, etc. Así que incluso si no inicia sesión nuevamente, .bashrcse carga (y por lo tanto restablece su entorno) cada vez que abre un nuevo shell.

  • Cosas como byobu realmente deberían entrar .profile, de lo contrario no funcionará ;-)

  • Deben entrar cosas como caminos .profilesi desea que funcionen fuera de las sesiones interactivas. (diga cuando presione Alt+ F2en GNOME)

Ralf
fuente
Marcaré esto como la respuesta si lo actualiza para incluir la línea de exportación solicitada que debe agregarse a .profile.
Joshua Flanagan
Esto solía ser válido solo para inicios de sesión de consola (por ejemplo, ssh, o los terminales virtuales accesibles para Ctrl + Alt + Fx). No sabía que / etc / gdm / Xsession fuentes ~ / .profile en estos días. ¡Ordenado!
Marius Gedminas
Sí, no mencioné / etc / gdm / Xsession específicamente o ~ / .Xprofile porque hay mejores maneras de hacer que los programas gráficos se inicien al inicio, lo que garantiza que el resto del entorno ya está cargado.
Ralf
1
Para que esta respuesta sea más completa, agregue el comentario de MattH sobre el abastecimiento de ~ / .profile para activar los cambios sin un ciclo de cierre de sesión / encendido.
Matt Wilkie
1
@schwiz: ~/.profileno se ejecuta en cada terminal, se ejecuta antes, cuando comienza su sesión de escritorio. El que se ejecuta en cada terminal es~/.bashrc
MestreLion
13

Lo puse a trabajar modificando ~/.profile

Parece que agregar ~ / bin a mi ruta fue un mal ejemplo, ya que ya hay código en ~ / .profile para hacerlo automáticamente, si el directorio existe.

Para agregar el directorio usr / local / foo a mi ruta para cada sesión en adelante, agrego / edito la siguiente línea al final de mi .profile:

export PATH=$PATH:/usr/local/foo

Sin embargo, para que esto surta efecto, necesitaba cerrar sesión y volver a iniciarla (simplemente cerrar la ventana de Terminal y abrir una nueva NO funcionó).

Joshua Flanagan
fuente
44
Haga eso export PATH="$PATH:/usr/foo", en caso de que alguna vez tenga espacios u otros caracteres especiales $PATH.
Gilles 'SO- deja de ser malvado'
3
Puede volver a cargar el entorno actual sin cerrar sesión escribiendo ". ~ / .Profile"
Matt H
1
@ Matt: no, no puedes. si la fuente ~/.profileen un terminal dado, será efectiva para ese terminal única
MestreLion
@MestreLion: tienes razón. Lo mencioné por conveniencia para la terminal actual. Olvidé agregar eso.
Matt H
¿Qué pasa si ya tengo algo en PATH? ¿Podría agregarlo como PATHS funciona en Windows? Por ejemplo PATH="$HOME/bin:$HOME/.local/bin:$PATH"ya lo he hecho.
Gabriel Fair
4

Para volver a cargar .profile y tomar los efectos de los cambios sin cerrar sesión / iniciar sesión, ejecute:

source ~/.profile
Bruno Freitas
fuente
este debería ser un comentario a la respuesta anterior
Pavlo Zhukov
3

Puede agregar la ruta /etc/environment, pero tenga en cuenta que no funcionará ninguna expansión de shell; la variable se establecerá literalmente en los caracteres que ingrese.

sagarchalise
fuente
Fuera de los dos métodos (agregando el comando de exportación en .profile y agregando el nombre completo de la ruta a PATH en etc / environment), ¿cuál debería preferirse?
Rohan Bhatia
2

Puede modificar el .bashrcarchivo en su $HOMEdirectorio.

Al final de este archivo, agregue la línea:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

También puede modificar el .profilearchivo, también en su $HOMEdirectorio, incluida la siguiente línea:

PATH="$HOME/directory_to_include_in_path/:$PATH"

Esto funcionó para mí.

Denner Vieira
fuente
2
No veo lo que esto agrega a las otras respuestas que explican más a fondo.
Zanna
Esta es la respuesta correcta si desea que el cambio afecte a las ventanas de terminal. El cambio .profileno tiene efecto en las ventanas de terminal.
Markus Laire
0

Si tiene ohmyzsh, vaya a su directorio de inicio a través de la terminal y escriba

nano .zshrc

Al final del archivo ingrese

export PATH = "$ HOME / directory_to_include_in_path /: $ PATH"

Finalmente reinicie su terminal. Trabajó para mi. Espero que esto haya sido útil.

Vallie
fuente
-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH
Mac
fuente
Esto es incorrecto y no funcionará. La expansión de parámetros no se realiza en/etc/environment
Zanna