답변:
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 세션은 독립적 인 것으로 생각하십시오 (대부분은 그렇습니다). 일반적으로 한 환경에서 다른 환경을 오염시키기 위해 정의 된 변수를 원하지 않습니다. 필요한 경우을 사용하십시오 export
.
.bashrc
? 내 생각 엔export
ing :export HADOOP_HOME=/home/me/dist/hadoop
, 당신이/tmp
sample.sh` 를 실행할 때 (bash
새로운 환경 으로 새로운 것을 생성한다 ) HADOOP_HOME은 새로운 환경에 있지 않다.