¿Cómo puedo agregar una ruta a la variable de entorno PATH?

11

¿Quiero agregar una ruta a la PATHvariable de entorno?

He intentado con export PATH=/mypath:$PATHy funciona. Pero la próxima vez que inicie la Terminal, mi nueva ruta ya no está en la PATHvariable de entorno.

¿Cómo puedo agregar una ruta a la PATHvariable de entorno? y debería estar allí también la próxima vez que inicie la Terminal.


Ahora tengo problemas con esto nuevamente, el truco que funcionó antes ya no parece funcionar.

He intentado con:

echo 'export GRADLE_HOME=/Users/jonas/gradle-1.2/' >> ~/.profile
echo 'export PATH=GRADLE_HOME/bin:$PATH' >> ~/.profile

para agregar dos variables de entorno. Entonces mi ~/.profile-file tiene este contenido:

export GRADLE_HOME=/Users/jonas/gradle-1.2/
export PATH=GRADLE_HOME/bin:$PATH

Pero cuando inicio una nueva ventana de Terminal y escribo gradle(el comando que agregué PATH), recibo un mensaje de que el comando no existe. Si ejecuto el comando /Users/jonas/gradle-1.2/bin, ¡funciona bien!

Jonas
fuente
Si sucede algo, mira también: Restablece tu variable de RUTA
Jari Keinänen
1
La asignación a PATH (segunda exportación) debe ser con $ GRADLE_HOME
nohillside

Respuestas:

5

echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile debería hacer el truco!

Si usara echo 'export PATH=/my/path:$PATH' > ~/.bash_profile, o cualquier variación, ¡estaría sobrescribiendo el contenido de su perfil!

Yasyf
fuente
9

OSX lee los siguientes archivos en orden cuando se abre un terminal:

/etc/profile
~/.bash_profile
~/.bash_login   
~/.profile     

Así que coloque la adición de su camino en uno de estos. Normalmente pongo adiciones en~/.bash_profile

robzolkos
fuente
2
Gracias, solíaecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
3

Además de los lugares mencionados por @RobZolkos, el shell de inicio de sesión también se ve dentro /etc/pathsy los archivos dentro /etc/paths.d/. Una entrada de ruta por línea en estos archivos.

Ver /etc/profiley la página del manual para path_helper.

Harald Hanche-Olsen
fuente
¡OK gracias! pero el mayor problema era cómo agregar el camino. Pero encontréecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
@Jonas: Me di cuenta de que tu problema estaba resuelto. Mi respuesta estaba destinada al beneficio de futuros lectores, para que puedan ver todas las opciones disponibles para ellos.
Harald Hanche-Olsen
2

Antigua pregunta pero, para usuarios de MacOS X Catalina:

Crear / editar ~/.zshenv:

# comment for yourself
PATH="$PATH:to/your/path"

Tenga en cuenta que modificar PATHen ~/.zprofileo ~/.zshrcno es correcto, debería ser ~/.zshenv.

Si necesita anteponer algo a PATH, cree / edite aún más ~/.zprofile:

# apply the prepend to PATH
[[ -r ~/.zshenv ]] && source ~/.zshenv
# remove duplicate in PATH
typeset -U PATH

Referencia: http://zsh.sourceforge.net/Intro/intro_3.html

Lloviendo
fuente
¿Qué quiere decir con "Si necesita anteponerse a la RUTA" y por qué no se puede hacer esto .zshenvtambién?
nohillside
@nohillside: Perdón por mi mala gramática, pero buena pregunta. Si intenta anteponer algo a la PATHde ~/.zshenvpor PATH="to/your/path:$PATH", sin las líneas en ~/.zprofile, no va a funcionar. Algo llamado path_helperlos moverá /usr/local/bin/:/usr/bin:...al frente PATH.
Llueve el
En resumen, es una cuestión de orden de carga. path_helperse ejecutará después ~/.zshenvpero antes ~/.zproflie. Y a partir de mi estudio de hoy, recomendaría usar el enlace simbólico en lugar de modificar PATH, que es mucho más simple.
Llueve el
0

Inserte en .bashrc estas líneas de código:

function pathadd {              # Add new element to PATH
  if ! echo $PATH | egrep -q "(:|^)$1(:|$)"
  then if [ "$2" = "after" ]
       then PATH="$PATH:$1"
       else PATH="$1:$PATH"
       fi
  fi
}

luego escriba un comando como: pathadd /opt/local/bino pathadd /opt/local/bin after.

Maurizio Loreti
fuente
Tenga en cuenta las dos funciones en fink's init- github.com/fink/base-files/blob/master/init.sh.in
fd0