回答:
これHADOOP_HOME
は、変数がエクスポートされないためです。
$ cat foo.sh
#!/bin/bash
echo "HADOOP_HOME: $HADOOP_HOME"
$ HADOOP_HOME=/home/me/dist/hadoop
$ echo $HADOOP_HOME
/home/me/dist/hadoop
$ foo.sh
HADOOP_HOME:
$ export HADOOP_HOME
$ foo.sh
HADOOP_HOME: /home/me/dist/hadoop
シェルスクリプトを実行すると、そのスクリプトは現在のインスタンス#!/bin/bash
の子シェルである独自のbashインスタンスで実行されます(これが行うことです)。変数は、エクスポートされた場合にのみ、デフォルトで子シェルに渡されません。各bashセッションは独立していると考えてください(大部分はそうです)。通常、1つの変数を別の環境で汚染することは望ましくありません。それが必要な場合には、を使用してくださいexport
。
.bashrc
か?私が推測するのは、あなたがexport
ingしていないということです:sample.sh`(新しい環境で新しいものを生成します)をexport HADOOP_HOME=/home/me/dist/hadoop
実行するとき、HADOOP_HOMEは新しい環境にありません。/tmp
bash