Me encontré con un problema extraño. Puse algunas variables env .bashrc
y funciona como debería:
echo $HADOOP_HOME
/home/me/dist/hadoop
Pero la variable env no es accesible cuando se ejecutan scripts bash. Supongamos que creo /tmp/sample.sh
con el siguiente contenido:
#! /bin/bash
echo $HADOOP_HOME
Cuando ejecuto el script anterior, repite una línea vacía:
/tmp/sample.sh
command-line
bash
scripts
environment-variables
Mehraban
fuente
fuente
.bashrc
? Supongo que no estásexport
ing:export HADOOP_HOME=/home/me/dist/hadoop
cuando ejecutas/tmp
sample.sh` (que generabash
un nuevo entorno con un nuevo entorno) HADOOP_HOME no está en el nuevo entorno.Respuestas:
Eso es porque la
HADOOP_HOME
variable no se exporta:Cuando ejecuta un script de shell, ese script se ejecutará en su propia instancia de bash (eso es lo que
#!/bin/bash
hace) que es un shell secundario del actual. Las variables no se pasan a los shells secundarios de forma predeterminada, solo si se exportan. Piense en cada sesión de bash como independiente (en gran medida lo son). Por lo general, no desea que las variables definidas en una contaminen el entorno de otra. Para aquellos casos donde sea necesario, useexport
.fuente