我遇到了一个奇怪的问题。我将一些环境变量放入其中.bashrc
,它可以正常工作:
echo $HADOOP_HOME
/home/me/dist/hadoop
但是在执行 bash 脚本时无法访问 env 变量。假设我/tmp/sample.sh
使用以下内容创建:
#! /bin/bash
echo $HADOOP_HOME
当我在上面运行脚本时,会回显一个空行:
/tmp/sample.sh
我遇到了一个奇怪的问题。我将一些环境变量放入其中.bashrc
,它可以正常工作:
echo $HADOOP_HOME
/home/me/dist/hadoop
但是在执行 bash 脚本时无法访问 env 变量。假设我/tmp/sample.sh
使用以下内容创建:
#! /bin/bash
echo $HADOOP_HOME
当我在上面运行脚本时,会回显一个空行:
/tmp/sample.sh
那是因为
HADOOP_HOME
变量没有被导出:当您运行一个 shell 脚本时,该脚本将在它自己的 bash 实例中运行(这就是它
#!/bin/bash
所做的),它是当前实例的子 shell。默认情况下,变量不会传递给子 shell,只有当它们被导出时。将每个 bash 会话视为独立的(它们基本上是独立的)。您通常不希望在一个变量中定义的变量污染另一个变量的环境。对于那些有必要的情况,请使用export
.