Soy muy nuevo en Linux y pongo el siguiente comando al final del archivo .profileen 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
PATHy cuál es el segundo$PATH, y por qué necesitamos dos?
command-line
bash
environment-variables
JohnDoea
fuente
fuente

exportcomando, porque laPATHvariable ya está marcada como exportada. (¡Pruébelo en ambos sentidos si no me cree!)Respuestas:
exportes 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).exportestablece 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~/.profiley 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,
PATHcomo se explicó anteriormente, es la variable de entorno que se establecerá usandoexport.Como
PATHnormalmente contiene algo cuando~/.profilese obtiene (de forma predeterminada, contiene/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games), simplemente configurandoPATHa~/.composer/vendor/binharíaPATHsolo 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 ,
:$PATHse coloca al final del valor que se asignará paraPATHquePATHtermine conteniendo~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games( es decir, lo quePATHya contiene más~/.composer/vendor/bin:al comienzo).fuente
https://help.ubuntu.com/community/EnvironmentVariables probablemente te ayudará. También
man bashpuede ser muy útil para entender cómo funciona eso (al menos en Bash)De todos modos,
PATH=básicamente está configurando laPATHvariable, agregando algunas rutas nuevas para buscar, agregando al final rutas ya establecidas previamente, con$PATH(que es básicamente una referencia a laPATHvariable).Entonces, digamos que
PATHhasta ahora estaba configurado para algo como:y luego estableces
tu
PATHdespué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
PATHpuede 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"exportEl/bin/exportcomando 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.PATHvariable.$PATHes laPATHasignación predeterminada (o al menos el aspecto de la variable hasta que este comando aparece en su.bashrco.profile), y expandirla.~/.composer/vendor/binse expandirá a/home/username/.composer/vendor/bin, donde.composerestá la carpeta oculta debido al punto inicial.~/.composer/vendor/bin:$PATHahora 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.PATHcomandos variables y externos permitidos para usarloEjemplo simple
Mi shell interactivo es en realidad
mksh, que también tieneexportincorporado. Al usarexportpara 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/binque 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
exportcomando hace que las variables estén disponibles en subcapas. Es decir, sin ella, la variablePATHno sería visible en subcapas.PATHse menciona dos veces:=signo.=signo. Esto hace que el antiguo valor sea parte del nuevo valor.fuente
PATHno sería visible en subcapas". Esto es incorrecto;PATHes una variable de entorno (que no es lo mismo que una variable de shell ), por lo que se exporta automáticamente y elexportcomando no es necesario.setenvcomando.PATHorigina en el entorno, se exporta automáticamente, por lo que no necesita ejecutarexportpara que los cambios se propaguen a los procesos secundarios (al contrario de lo que dice la página que ha vinculado).PATH=fooy queexport PATH=footenía un comportamiento idéntico.El
exportes un comando buildin de bash, significa exportar variables para que sean variables de entorno. (podría escribirhelp exportpara 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
PATHes 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
$PATHes un tipo de Funciton de fiesta, llamadavariable expantion, golpe del reemplazará el valor del existirPATHen la serie de parámetros, ANTES enviar la cadena deexportcomandoel
: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