Bash
Gestionando variable de entorno PATH
Buscar..
Sintaxis
- Agregar ruta: PATH = $ PATH: / new / path
- Agregar ruta: PATH = / new / path: $ PATH
Parámetros
Parámetro | Detalles |
---|---|
CAMINO | Variable de entorno de ruta |
Observaciones
Bash archivo de configuración:
Este archivo se obtiene cada vez que se inicia un nuevo shell interactivo de Bash.
En sistemas GNU / Linux es generalmente el archivo ~ / .bashrc; en Mac es ~ / .bash_profile o ~ / .profile
Exportar:
La variable PATH se debe exportar una vez (se realiza de forma predeterminada). Una vez que se exporte, seguirá exportándose y cualquier cambio que se le haga se aplicará de inmediato.
Aplicar los cambios:
Para aplicar los cambios a un archivo de configuración de Bash, debe volver a cargar ese archivo en un terminal ( source /path/to/bash_config_file
)
Agregar una ruta a la variable de entorno PATH
La variable de entorno PATH se define generalmente en ~ / .bashrc o ~ / .bash_profile o / etc / profile o ~ / .profile o /etc/bash.bashrc (archivo de configuración Bash específico de la distro)
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/jdk1.8.0_92/bin:/usr/lib/jvm/jdk1.8.0_92/db/bin:/usr/lib/jvm/jdk1.8.0_92/jre/bin
Ahora, si queremos agregar una ruta (por ejemplo, ~/bin
) a la variable PATH:
PATH=~/bin:$PATH
# or
PATH=$PATH:~/bin
Pero esto modificará el PATH solo en el shell actual (y su subshell). Una vez que salga del shell, esta modificación desaparecerá.
Para hacerlo permanente, debemos agregar ese bit de código al archivo ~ / .bashrc (o lo que sea) y volver a cargar el archivo.
Si ejecuta el siguiente código (en el terminal), agregará ~/bin
a la RUTA permanentemente:
echo 'PATH=~/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
Explicación:
-
echo 'PATH=~/bin:$PATH' >> ~/.bashrc
agrega la líneaPATH=~/bin:$PATH
al final del archivo ~ / .bashrc (puede hacerlo con un editor de texto) -
source ~/.bashrc
vuelve a cargar el archivo ~ / .bashrc
Esto es un poco de código (ejecutado en el terminal) que verificará si una ruta ya está incluida y agregará la ruta solo si no:
path=~/bin # path to be included
bashrc=~/.bashrc # bash file to be written and reloaded
# run the following code unmodified
echo $PATH | grep -q "\(^\|:\)$path\(:\|/\{0,1\}$\)" || echo "PATH=\$PATH:$path" >> "$bashrc"; source "$bashrc"
Eliminar una ruta de la variable de entorno PATH
Para eliminar un PATH de una variable de entorno PATH, debe editar el archivo ~ / .bashrc o ~ / .bash_profile / / etc / profile o ~ / .profile o /etc/bash.bashrc (específico de la distro) y eliminar la asignación de ese camino particular
En lugar de encontrar la asignación exacta, puede hacer un reemplazo en el $PATH
en su etapa final.
Lo siguiente quitará $path
de forma segura de $PATH
:
path=~/bin
PATH="$(echo "$PATH" |sed -e "s#\(^\|:\)$(echo "$path" |sed -e 's/[^^]/[&]/g' -e 's/\^/\\^/g')\(:\|/\{0,1\}$\)#\1\2#" -e 's#:\+#:#g' -e 's#^:\|:$##g')"
Para hacerlo permanente, deberá agregarlo al final de su archivo de configuración de bash.
Puedes hacerlo de forma funcional:
rpath(){
for path in "$@";do
PATH="$(echo "$PATH" |sed -e "s#\(^\|:\)$(echo "$path" |sed -e 's/[^^]/[&]/g' -e 's/\^/\\^/g')\(:\|/\{0,1\}$\)#\1\2#" -e 's#:\+#:#g' -e 's#^:\|:$##g')"
done
echo "$PATH"
}
PATH="$(rpath ~/bin /usr/local/sbin /usr/local/bin)"
PATH="$(rpath /usr/games)"
# etc ...
Esto hará que sea más fácil manejar múltiples rutas.
Notas:
- Deberá agregar estos códigos en el archivo de configuración de Bash (~ / .bashrc o lo que sea).
- Ejecute
source ~/.bashrc
para volver a cargar el archivo de configuración de Bash (~ / .bashrc).