我在網路上看到其他人也有這個問題,但解決方案還沒有定論,所以我想再次引起人們的注意。
根據 Ubuntu wiki 中的這個頁面: https://help.ubuntu.com/community/EnvironmentVariables 設定會話範圍環境變數的建議方法是修改 ~/.pam_environment。
這是我的目標:
- 我想建立一個環境變數 ANDROID_HOME ,它將具有指向我的主資料夾中某個位置的路徑作為值。
- 我想將兩個資料夾新增到路徑中。
這就是我所做的。 ~/.pam_environment 檔案不存在,因此我創建了它並向其中添加了以下幾行:
ANDROID_HOME=${HOME}/Android/Sdk
PATH DEFAULT=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
登出並重新登入。
結果出乎意料。我打開終端機並回顯 $ANDROID_HOME 這就是我得到的:
${HOME}/Android/Sdk
看起來${HOME}
沒有替換為我的主資料夾路徑。為什麼會這樣呢?
觀察cd
-ing 到 $ANDROID_HOME (Android/Sdk 實際上存在於我的主資料夾中):
anvar@crazymachine:~$ cd $ANDROID_HOME
bash: cd: ${HOME}/Android/Sdk: No such file or directory
還回顯 $PATH 給了我這個:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:${HOME}/Android/Sdk/tools:${HOME}/Android/Sdk/platform-tools
為什麼變數沒有像邏輯上假設的那樣用它們的值替換,特別是當上述站點中的範例給人這樣的印象時,變數可以在值內使用?
設定 GUI 程式也可以存取的會話範圍環境變數的正確方法是什麼?
答案1
中的例子維基百科,透過 來設定會話變量~/.pam_environment
,在註釋中指出:
用於修改 PATH 的語法與腳本檔案不同,它是變數擴充功能所必需的。
因此你的第一行應該是這樣的:
ANDROID_HOME DEFAULT=${HOME}/Android/Sdk
答案2
兩個建議:
第一 - 您的環境聲明的形式應該是:
ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
其次,將新的環境語句放入~/.profile
答案3
我認為您可能需要export HOME
在設定路徑變數後(在 ~/.bashrc 中我們這樣做)