¿Qué hace la línea PATH de exportación en .bashrc?

9

No estoy tan interesado en Linux y tengo la siguiente duda después de un tutorial.

Tengo que modificar el bashrcarchivo. ¿Qué tipo de configuración contiene este archivo? Creo que algo relacionado con el entorno de bash shell, pero no estoy tan seguro de ello.

Tengo que insertar esta línea:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

¿Qué hace exactamente esta línea?

Creo que esa exportdeclaración se usa para crear una nueva variable que la hace disponible para otro programa.

Pero, ¿qué hace exactamente esta línea? ¿Es PATHel nombre de la variable que estoy definiendo? ¿Qué es $HOME?

Lo que significa el :símbolo entre PATH=$HOME/.local/biny $HOME/.local/usr/biny $PATHla sección en la expresión anterior?

¿Qué significa exactamente esta expresión?

AndreaNobili
fuente
El: entre los elementos es el separador para cada segmento. Sin él, su camino sería una carrera continua y no funcionaría.
Terrance
En Ubuntu, este tipo de PATHmodificaciones ya se realiza en el ~/.profilearchivo, por lo que es un poco inconsistente hacer cosas similares ~/.bashrc. Mejor IMO para modificar el código que ya está en ~/.profilesi es necesario. Actualmente el ~/.profilearchivo predeterminado incluye esta línea:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Gunnar Hjalmarsson
@GunnarHjalmarsson: Hay algunas situaciones que hacen que .profile y .bashrc sean diferentes. El archivo .profile se analiza por shells de inicio de sesión y no por subshells. Pero dado que necesita iniciar sesión de todos modos para iniciar una subshell, está bien, ya que las subshells heredarán $ PATH. El archivo .bashrc no será analizado por el shell de inicio de sesión, sino que será analizado por subshells. La diferencia viene cuando tienes algunas cosas que no son hijos de shells de inicio de sesión (tal vez un script de automatización sofisticado que llama a otros scripts como git commit hook): cualquier cosa en .profile no se leerá, por lo que se ignorarán
slebetman
@slebetman: Correcto, y en el caso de un escritorio, hay otra diferencia que no menciona: a diferencia ~/.bashrc, ~/.profileel administrador de pantalla lo obtiene, por lo que solo las variables establecidas por ~/.profileestán disponibles cuando inicia programas desde el entorno gráfico. Y eso ocurre temprano, por lo que debería estar bien para los procesos de inicio automático de la sesión.
Gunnar Hjalmarsson

Respuestas:

16

Para recapitular todo lo mencionado en esta pregunta,

La exportparte

La exportlínea significa que la variable que declare después será accesible para los procesos secundarios. En otras palabras, los procesos podrán acceder a la variable declarada después de la exportpalabra clave a través del entorno del shell. Entonces, si hiciste algo así export FOO="BAR"y luego obtuviste los cambios en tu entorno de shell, podrías escribir $FOOy obtener BAR.

La PATHparte

La línea de ruta es tal como usted indicó: está declarando una variable que se nombra PATHpara el entorno de shell. En el entorno bash, PATHtiene un propósito especial de definir dónde busca programas la computadora. Esto le permite escribir comandos personalizados para scripts sin escribir el directorio completo. Tenga en cuenta que PATH está marcado para exportación de forma predeterminada, por lo que esta línea no tiene que reescribirse. Sin embargo, no duele.

El $HOMEen la PATHvariable

Al comienzo de la ruta que se asigna a la PATHvariable, $HOMEse declara. Esto significa que la computadora tomará el valor almacenado HOMEy lo copiará y pegará frente al resto de la línea cuando lo lea.

El :entre ambos caminos

El :es equivalente a una coma en oraciones. Simplemente separa los tres directorios. Sin esos tres directorios, la consola no reconocería los comandos que recibe. Esos tres lugares son los tres directorios que se usan más comúnmente para que los scripts / archivos de comandos se almacenen y, por lo tanto, el terminal debe tener acceso a ellos sin tener que escribir la ruta completa del archivo.

TheOdd
fuente
¡Gran respuesta! "La línea de exportación significa que la variable que usted declara después de que sea accesible para los procesos secundarios" es el principal para estos procesos secundarios ¿el terminal desde donde ejecutaré un comando?
vadasambar
5

La PATHvariable le permite a bash saber dónde buscar programas ejecutables, por lo que si tiene un script o algún otro archivo ejecutable $HOME/.local/bin, la modificación PATHle permitirá escribir y ejecutar ese archivo tal como lo hace con lso df.

exportsolo significa hacer que esa PATHvariable también esté disponible para otros programas que ejecute desde bash.

En cuanto a : , es solo un separador para cada directorio. Es lo mismo que una coma en una lista de palabras, nada más.

Sergiy Kolodyazhnyy
fuente