Environment-Variables
設置我的變數,我是使用點符號還是〜?
我所有的 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/"
首先,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
)。