Environment-Variables

設置我的變數,我是使用點符號還是〜?

  • January 13, 2019

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

引用自:https://unix.stackexchange.com/questions/311969