我的所有 Hadoop 配置文件都位于以下位置:
./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
要设置 HADOOP_HOME 变量,我应该使用点符号还是 ~?
HADOOP_HOME = "./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
或者
HADOOP_HOME = " ~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
答案1
首先,shell 分配会不是等号之前或之后允许有一个空格。您的两个建议实际上都会尝试运行一个字面称为 的命令HADOOP_HOME
。
相对路径不是一个好主意——相对路径是相对于当前工作目录的,而不是你的主目录。所以如果你已经cd
进入了~/Documents
,那就意味着~/Documents/.linuxbrew/…
。根本不是你想要的。
由于引用的工作原理,第二个也不起作用。扩展~
是 shell 应该做的事情——它通常不应该真正将其放入环境变量中。但通过引用它,你就阻止了这种扩展。您需要将~/
位从引号中删除,或者替代使用$HOME
(它将在双引号内扩展。因此,其中任何一个都应该有效(至少如果$HOME
设置为您的主目录,它几乎总是如此):
HADOOP_HOME="$HOME/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
HADOOP_HOME=~/".linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
就我个人而言,我发现第一个更容易阅读。还有第三种选择——实际上不需要在这里引用任何内容;名称中没有任何特殊字符。所以这也很好(并且完全可读):
HADOOP_HOME=~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/
请记住还要导出变量 ( export HADOOP_HOME
)。