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

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

我的所有 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)。

相关内容