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