设置我的变量,我是使用点符号还是~?

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)

der*_*ert 5

首先,外壳的任务也没有之前或等号后允许空间。您的两个建议实际上都会尝试运行一个字面称为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)。