如何設定會話範圍的環境變數和PATH?

如何設定會話範圍的環境變數和PATH?

我在網路上看到其他人也有這個問題,但解決方案還沒有定論,所以我想再次引起人們的注意。

根據 Ubuntu wiki 中的這個頁面: https://help.ubuntu.com/community/EnvironmentVariables 設定會話範圍環境變數的建議方法是修改 ~/.pam_environment。

這是我的目標:

  1. 我想建立一個環境變數 ANDROID_HOME ,它將具有指向我的主資料夾中某個位置的路徑作為值。
  2. 我想將兩個資料夾新增到路徑中。

這就是我所做的。 ~/.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 中我們這樣做)

相關內容