Soy muy nuevo en Linux y pongo el siguiente comando al final del archivo .profile
en mi carpeta de inicio:
export PATH="~/.composer/vendor/bin:$PATH"
Conozco un poco los problemas de las variables de entorno y sus valores de Windows, pero en este caso quiero entender qué hace este comando y cuáles son las partes que lo componen:
¿Qué es esta frase de "exportación" al principio? ¿Exporta los datos para que estén disponibles para Bash?
¿Cuál es el primero
PATH
y cuál es el segundo$PATH
, y por qué necesitamos dos?
command-line
bash
environment-variables
JohnDoea
fuente
fuente
export
comando, porque laPATH
variable ya está marcada como exportada. (¡Pruébelo en ambos sentidos si no me cree!)Respuestas:
export
es un comando (más precisamente, es un Bash incorporado , es decir, no es un presente ejecutablePATH
, es un comando que Bash ha incorporado en sí mismo).export
establece la variable de entorno en el lado izquierdo de la asignación al valor en el lado derecho de la asignación; dicha variable de entorno es visible para el proceso que la configura y para todos los subprocesos generados en el mismo entorno, es decir, en este caso para la instancia de Bash que las fuentes~/.profile
y para todos los subprocesos generados en el mismo entorno (que pueden incluir, por ejemplo, también otros shells , que a su vez podrá acceder a él).La primera,
PATH
como se explicó anteriormente, es la variable de entorno que se establecerá usandoexport
.Como
PATH
normalmente contiene algo cuando~/.profile
se obtiene (de forma predeterminada, contiene/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
), simplemente configurandoPATH
a~/.composer/vendor/bin
haríaPATH
solo contener~/.composer/vendor/bin
.Entonces, dado que las referencias a una variable en un comando son reemplazadas por (o "expandidas" a) el valor de la variable por Bash en el momento de la evaluación del comando ,
:$PATH
se coloca al final del valor que se asignará paraPATH
quePATH
termine conteniendo~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
( es decir, lo quePATH
ya contiene más~/.composer/vendor/bin:
al comienzo).fuente
https://help.ubuntu.com/community/EnvironmentVariables probablemente te ayudará. También
man bash
puede ser muy útil para entender cómo funciona eso (al menos en Bash)De todos modos,
PATH=
básicamente está configurando laPATH
variable, agregando algunas rutas nuevas para buscar, agregando al final rutas ya establecidas previamente, con$PATH
(que es básicamente una referencia a laPATH
variable).Entonces, digamos que
PATH
hasta ahora estaba configurado para algo como:y luego estableces
tu
PATH
después de eso será como:Espero que tenga sentido.
Y además, exporta la nueva variable para que sea conocida en su entorno, incluidos también los procesos / subcapas secundarios.
Solo tenga en cuenta también que el orden de los directorios tal como se establece
PATH
puede ser importante. Y algo asíPATH="$PATH:a:b:c"
te dará el resultado:lo que afectará el orden de los directorios / rutas mientras busca un comando (si tiene su comando en más de uno de los directorios, se utilizará el primero encontrado, lo que a veces puede dar algunos resultados inesperados).
fuente
Aquí está el comando para que todos puedan seguirlo a medida que avanzan por las viñetas.
export PATH="~/.composer/vendor/bin:$PATH"
export
El/bin/export
comando shell incorporado (lo que significa que no hay , es una cosa de shell) básicamente hace que las variables de entorno estén disponibles para otros programas llamados desdebash
(vea la pregunta vinculada en Lectura adicional) y las subcapas.PATH
variable.$PATH
es laPATH
asignación predeterminada (o al menos el aspecto de la variable hasta que este comando aparece en su.bashrc
o.profile
), y expandirla.~/.composer/vendor/bin
se expandirá a/home/username/.composer/vendor/bin
, donde.composer
está la carpeta oculta debido al punto inicial.~/.composer/vendor/bin:$PATH
ahora se ha transformado en una larga lista de carpetas, separadas por:
. Todo está encerrado entre comillas dobles para que incluyamos carpetas con espacios en su camino.PATH
comandos variables y externos permitidos para usarloEjemplo simple
Mi shell interactivo es en realidad
mksh
, que también tieneexport
incorporado. Al usarexport
para establecerVAR
, mi variable se puede pasar y usar por la cadena posterior de comandos / subprocesos, donde exporté esa misma variableLectura extra
fuente
~
de~/.composer/vendor/bin
que no se ampliará! La tilde solo se expande en algunos lugares especiales, como directamente después de la=
señal.PATH="~/.foo:$PATH"
resultados en~/.foo:/other/path/dirs...
. Pero~
se expandiría enPATH=~"/.foo:$PATH"
, lo que da como resultado/home/user/.foo:/other/path/dirs...
.He leído aquí y en otros lugares de la web, hablé con un amigo sobre esto y decidí que como estudiante de primer año (tal vez más de un estudiante de primer año de Ubuntu que algunos aquí podrían pensar), debería mapear este comando: debería hacer un mapa y por lo tanto, aprenda qué es y dónde está:
Datos preliminares
Si por ahora no entendió algo en este capítulo, no se preocupe, será más claro a medida que continúe leyendo, pero para comprender este asunto, debe leer sobre las variables de entorno (EV), sus valores y propósito. . Ahora trataré de explicar el comando en palabras simples y en un método de mapeo, para los recién llegados como yo, y solo para los recién llegados. Intenté hacer lo mejor aquí ...
Cartografía
El valor original del EV "PATH" como viene con Ubuntu 15.10 es:
En la nota del comando en sí, tenemos dos frases PATH. El último es $ PATH - El $ dice "imprime el valor o valores originales del EV a tu lado"; El EV al lado es el PATH EV.
Exportamos la variable de ruta en sí (también la pusimos a disposición para subprocesos, procesos de IE que se ejecutan en la CLI que no son en realidad el shell Bash, sino que se ejecutan dentro de ella (como Drush , que es la CLI de Drupal ).
Además de la exportación, también lo expandimos: la primera frase PATH (PATH =) nos usó para agregar un valor adicional (~ / .composer / vendor / bin :) al valor original (representado por $ PATH).
Los dos puntos (:) al final del nuevo valor que mencioné en el párrafo anterior, se utilizan para distinguir el nuevo valor del original.
Los "" son el área en la que residen los valores.
El ~ es la carpeta de inicio.
Espero que después de este mapeo que hice, el comando sea más claro para los estudiantes de primer año como yo.
fuente
El
export
comando hace que las variables estén disponibles en subcapas. Es decir, sin ella, la variablePATH
no sería visible en subcapas.PATH
se menciona dos veces:=
signo.=
signo. Esto hace que el antiguo valor sea parte del nuevo valor.fuente
PATH
no sería visible en subcapas". Esto es incorrecto;PATH
es una variable de entorno (que no es lo mismo que una variable de shell ), por lo que se exporta automáticamente y elexport
comando no es necesario.setenv
comando.PATH
origina en el entorno, se exporta automáticamente, por lo que no necesita ejecutarexport
para que los cambios se propaguen a los procesos secundarios (al contrario de lo que dice la página que ha vinculado).PATH=foo
y queexport PATH=foo
tenía un comportamiento idéntico.El
export
es un comando buildin de bash, significa exportar variables para que sean variables de entorno. (podría escribirhelp export
para inclinarse más(los caracteres que siguen el comando son parámetros, divididos por el espacio, por lo que en este caso, solo hay un parámetro)
El
PATH
es el nombre de la variable, generalmente, predefinido varibale por bash, se nombrará en mayúsculas.los
=
medios asignan valor a esta variable.toda la cadena es el valor de la variable
el
$PATH
es un tipo de Funciton de fiesta, llamadavariable expantion
, golpe del reemplazará el valor del existirPATH
en la serie de parámetros, ANTES enviar la cadena deexport
comandoel
:
en un carácter especial en la variable RUTA y subestimado por todas las aplicaciones que desean utilizar esta variable. Significa separador. por lo que tendrán muchos directorios en la variable PATH.fuente