Encontrei um problema estranho. Coloquei algumas variáveis env .bashrc
e funciona como deveria:
echo $HADOOP_HOME
/home/me/dist/hadoop
Mas a variável env não está acessível ao executar scripts bash. Suponha que eu crie /tmp/sample.sh
com o conteúdo abaixo:
#! /bin/bash
echo $HADOOP_HOME
Quando executo o script acima, ecoa uma linha vazia:
/tmp/sample.sh
command-line
bash
scripts
environment-variables
Mehraban
fonte
fonte
.bashrc
? Meu palpite é que você não estáexport
ing :,export HADOOP_HOME=/home/me/dist/hadoop
quando você executa o/tmp
sample.sh` (que gera um novobash
com um novo ambiente) HADOOP_HOME não está no novo ambiente.Respostas:
Isso
HADOOP_HOME
ocorre porque a variável não é exportada:Quando você executa um script de shell, esse script é executado em sua própria instância do bash (é o que
#!/bin/bash
faz) que é um shell filho do atual. As variáveis não são passadas para shells filhos por padrão, apenas se forem exportadas. Pense em cada sessão do bash como independente (elas são em grande parte). Você geralmente não deseja que variáveis definidas em uma poluam o ambiente de outra. Nos casos em que isso for necessário, useexport
.fonte