use*_*ser 0 environment-variables variable
我所有的 Hadoop 配置文件都位于以下位置:
./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
Run Code Online (Sandbox Code Playgroud)
要设置我的 HADOOP_HOME 变量,我是使用点符号还是 ~?
HADOOP_HOME = "./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
Run Code Online (Sandbox Code Playgroud)
或者
HADOOP_HOME = " ~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
Run Code Online (Sandbox Code Playgroud)
首先,外壳的任务也没有之前或等号后允许空间。您的两个建议实际上都会尝试运行一个字面称为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/"
Run Code Online (Sandbox Code Playgroud)
就个人而言,我发现第一个更容易阅读。还有第三种选择——这里实际上不需要任何引用;名称中没有任何特殊字符。所以这也很好(并且完全可读):
HADOOP_HOME=~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/
Run Code Online (Sandbox Code Playgroud)
请记住还要导出变量 ( export HADOOP_HOME
)。