Alguien me dijo eso:
BASH no es una variable de entorno, es una variable de shell
¿Cual es la diferencia?
bash
command-line
environment-variables
Tom Brito
fuente
fuente
Respuestas:
$BASH
es una variable local que es válida solo en el shell actual (bash).Variables de entorno como
$SHELL
son válidas en todo el sistema. En un shell Bash actual,$BASH
apunta a la ruta de ejecución de bash , mientras que$SHELL
apunta al shell definido como predeterminado (que puede ser del mismo valor).Para obtener una explicación de las variables de entorno, consulte Variables de entorno en la Ayuda de Ubuntu.
fuente
Una variable de entorno está disponible globalmente, en un programa y sus programas secundarios. Una variable de shell solo está disponible en el shell actual. Para que una variable de shell esté disponible como una variable de entorno, use
export VARNAME
(sin dólar$
).Ejemplos de aclaración:
Otra forma de definir una variable de entorno:
fuente
export
no establece necesariamente una variable de entorno. stackoverflow.com/questions/7411455/…export
establece una variable de entorno para procesos secundarios. La publicación que ha vinculado no contradice esta respuesta, ¿podría aclarar por qué cree que está mal?export
absolutamente establece una variable de entornoHay una diferencia. Las variables de Shell y las variables de entorno lo explicarán mejor que yo, pero aquí hay un extracto:
fuente
Variable de shell: Corto plazo, Aplicado solo a la instancia actual del shell, No aplicable en todo el sistema
Variable ambiental: uso a largo plazo, sistema válido en todo el mundo, permitido globalmente
Por convención, las variables de Shell tienen su nombre en minúsculas mientras Envn. Las variables se escriben en mayúsculas
fuente
Para responder a esta pregunta, primero intente comprender el alcance de una variable.
Cuando crea una nueva variable como
SOME_ENV_VARIABLE="testing.txt"
siSHELL scope
estuviera en el , eso significa que se puede acceder por esa instancia del shell donde el usuario está conectado. Cuando la instancia cambia, por ejemplo, abre un nuevo terminal o cambia el shell (por ejemplo, usted cambie acsh
) no puede acceder a esa variable.Cuando exporta esa variable como
export SOME_ENV_VARIABLE
esa variable ahora está disponible en el ámbito del entorno, eso significa que en ese caso si cambia el shell aún puede acceder a esa variable. Tratemos de entender con el siguiente ejemplo:Analogía: supongamos que tiene un apartamento de dos habitaciones y lo está compartiendo con otro compañero de cuarto. Cualquiera puede acceder al área común, pero no a sus habitaciones, la variable de entorno es como el área común y la variable de concha es como la habitación, si desea algo en el área común, cualquiera puede acceder a ella, pero si la mantiene en su habitación, solo puede ser accedido por usted
Recuerde que si abre un nuevo terminal, no podrá acceder a ninguna de las variables porque está cambiando esa instancia . Para eso, debe agregar sus variables en cualquiera
.profile
o.bashrc
(si está usando bash).fuente