簡體   English   中英

在 Mac OS X Lion 上設置環境變量

[英]Set environment variables on Mac OS X Lion

當有人說“編輯您的 .plist 文件”或“您的 .profile”或“.bash_profile”等時,這讓我感到困惑。 我不知道這些文件在哪里,如果我必須這樣做,如何創建它們等等,以及為什么似乎有這么多不同的文件(為什么?他們做不同的事情嗎?)

那么有人可以非常耐心地向以前的 Windows 用戶解釋一下如何一步一步地做到這一點嗎?

我需要為 GUI 應用程序和命令行應用程序設置變量,目前它用於需要變量的 ant 腳本,但很可能還有其他需求。

請注意,我也有 Lion,因為您在谷歌上搜索的許多答案對於 Lion 來說似乎已經過時了……

另請注意,我使用終端的經驗幾乎為零。 我願意學習,但請為新手解釋...

首先,要了解 OS X 的一件事是它構建在 Unix 上。 這是 .bash_profile 的用武之地。當您在 OS X 中啟動終端應用程序時,默認情況下您會獲得一個 bash shell。 bash shell 來自 Unix,當它加載時,它運行 .bash_profile 腳本。 您可以為您的用戶修改此腳本以更改您的設置。 該文件位於:

~/.bash_profile

小牛隊更新

OS X Mavericks 不使用 environment.plist - 至少不用於 OS X Windows 應用程序。 您可以將launchd 配置用於窗口化應用程序。 .bash_profile 仍然受支持,因為它是終端中使用的 bash shell 的一部分。

僅限獅子和山獅

OS X 窗口化應用程序從您的 environment.plist 文件接收環境變量。 這可能就是您所說的“.plist”文件的意思。 該文件位於:

~/.MacOSX/environment.plist

如果您對 environment.plist 文件進行更改,則 OS X Windows 應用程序(包括終端應用程序)將設置這些環境變量。 您在 .bash_profile 中設置的任何環境變量只會影響您的 bash shell。

通常我只在我的 .bash_profile 文件中設置變量並且不更改 .plist 文件(或小牛上的 launchd 文件)。 大多數 OS X 窗口化應用程序不需要任何自定義環境。 只有當應用程序實際上需要特定的環境變量時,我才更改 environment.plist(或小牛上的啟動文件)。

聽起來您想要的是更改 environment.plist 文件,而不是 .bash_profile。

最后一件事,如果您查找這些文件,我想您不會找到它們。 如果我沒記錯的話,它們不在我最初安裝的 Lion 中。

編輯:以下是創建 plist 文件的一些說明。

  1. 打開 Xcode
  2. 選擇文件 -> 新建 -> 新建文件...
  3. 在 Mac OS X 下選擇資源
  4. 選擇一個 plist 文件
  5. 按照其余提示操作

要編輯文件,您可以按住 Control 單擊以獲取菜單並選擇添加行。 然后您可以添加一個鍵值對。 對於環境變量,鍵是環境變量名稱,值是該環境變量的實際值。

創建 plist 文件后,您可以隨時使用 Xcode 打開它以進行修改。

您的.profile.bash_profile只是存在於“home”文件夾中的文件。 如果您打開 Finder 窗口並在“收藏夾”面板中單擊您的帳戶名稱,您將看不到它們。 如果您打開終端窗口並鍵入ls以列出文件,您仍然看不到它們。 但是,您可以通過在終端中使用ls -a來找到它們。 或者,如果您打開您最喜歡的文本編輯器(比如 TextEdit,因為它是 OS X 附帶的)並執行 File->Open 然后按Command + Shift + 並單擊您的帳戶名(主文件夾),您也會看到它們。 如果您沒有看到它們,那么您可以在您喜歡的文本編輯器中創建一個。

現在,添加環境變量相對簡單,並且在概念上與 windows 非常相似。 在您的.profile ,每行添加一個變量名稱及其值,如下所示:

export JAVA_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home

等等。

如果您正在修改“PATH”變量,請確保包含已為您設置的系統默認 PATH:

export PATH=$PATH:/path/to/my/stuff

現在是奇怪的部分,您可以打開一個新的終端窗口以使新變量生效,或者您需要鍵入.profile.bash_profile以重新加載文件並將內容應用於當前終端的環境。

您可以使用終端中的“set”命令檢查您的更改是否生效。 只需鍵入set (或set | more如果您喜歡分頁列表)並確保您添加到文件中的內容在那里。

至於將環境變量添加到 GUI 應用程序,這通常是沒有必要的,我想了解更多有關您特別想做什么以更好地為您提供答案的信息。

以下是有關 Lion OS 10.7.x 中 PATH 變量的更多信息:

如果需要全局設置PATH,系統會按照以下順序構建PATH:

  1. 解析文件/private/etc/paths ,每行一個路徑
  2. 解析文件夾/private/etc/paths.d的內容。 該文件夾中的每個文件可以包含多個路徑,每行一個路徑。 加載順序首先由文件名決定,然后是文件中行的順序。
  3. /private/etc/launchd.conf setenv PATH語句,它將將該路徑附加到已在 #1 和 #2 中構建的路徑(您不得使用 $PATH 來引用目前已構建的 PATH 變量)。 但是,考慮到其他兩個選項,在這里設置 PATH 是完全沒有必要的,盡管這是可以為所有用戶設置其他全局環境變量的地方。

這些路徑和變量由所有用戶和應用程序繼承,因此它們是真正全局的——注銷和登錄不會重置這些路徑——它們是為系統構建的,並且在任何用戶有機會登錄之前創建,因此對這些的更改需要重新啟動系統才能生效。

順便說一句,全新安裝的 OS 10.7.x Lion 沒有我可以找到的environment.plist ,因此它可能有效,但也可能會被棄用。

echo $PATH

它打印當前路徑值

然后做vim ~/.bash_profile並寫

export PATH=$PATH:/new/path/to/be/added

在這里,您將附加到舊路徑,因此保留舊路徑並將新路徑添加到其中

然后做

source ~/.bash_profile

這將執行它並添加路徑

然后再次檢查

echo $PATH

不幸的是,這些答案都沒有解決我遇到的具體問題。

這是一個簡單的解決方案,而不必弄亂bash 就我而言,它正在讓gradle工作(對於Android Studio )。

順便說一句,這些步驟與 OSX (Mountain Lion 10.8.5) 有關

  • 打開終端。
  • 運行以下命令:

    sudo nano /etc/paths (或sudo vim /etc/paths for vim)

    納米

  • 轉到文件底部,然后輸入要添加的路徑。
  • 按 control-x 退出。
  • 輸入“Y”以保存修改后的緩沖區。
  • 打開一個新的終端窗口,然后輸入:

    echo $PATH

您應該會看到附加到 PATH 末尾的新路徑

我從這篇文章中得到了這些細節:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

我希望能幫助別人

簡化說明

這篇文章/問題有點陳舊,所以我將為 OS X Lion 用戶回答一個簡化版本。 默認情況下,OSX Lion 沒有以下任何文件:

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profile

至多,如果您在終端中做過任何事情,您可能會看到 ~/.bash_history

這是什么意思

您必須創建文件來設置默認的 bash 命令(通常在 ~/.bashrc 中)。 為此,請使用任何類型的編輯器,但在終端中進行更簡單:

  1. %> emacs .profile
  2. [來自 w/in emacs 類型:] source ~/.bashrc
  3. [來自 emacs 類型:] Ctrl + x Ctrl + s (保存文件)
  4. [來自 w/in emacs 類型:] Ctrl + x Ctrl + c (關閉 emacs)
  5. %> emacs .bashrc
  6. [在 emacs 中輸入/粘貼所有 bash 命令,保存並退出]

下次退出並重新加載終端時,它應該加載所有 bash 首選項。 為了更好地衡量,將您的命令分成有用的文件名通常是個好主意。 例如,從 ~/.bashrc 中,您應該有一個source ~/.bash_aliases並將所有別名命令放在 ~/.bash_aliases 中。

對我.launchd.conf用我需要的變量創建一個.launchd.conf

setenv FOO barbaz

此文件在登錄時由 launchd 讀取。 您可以使用以下命令將變量“即時”添加到正在運行的 launchd:

launchctl setenv FOO barbaz`

事實上, .launchd.cond只包含 launchctl 命令。

以這種方式設置的變量似乎正確地存在於 GUI 應用程序中。

如果您碰巧嘗試以這種方式設置 LANG 或 LC_ 變量,並且您碰巧正在使用 iTerm2,請確保禁用您正在使用的配置文件的終端選項卡下的“自動設置區域設置變量”設置。 這似乎覆蓋了launchd的環境變量,在我的情況下是設置損壞的LC_CTYPE導致遠程服務器出現問題(通過變量)。

(雖然 environment.plist 似乎仍然適用於我的 Lion。您可以使用RCenvironment首選項窗格來維護文件,而不是手動編輯它或需要 Xcode。似乎仍然適用於 Lion,盡管它的最后一次更新來自 Snow Leopard時代。使它成為我個人首選的方法。)

在 Mac OS 上設置 PATH 環境變量

打開終端程序(默認情況下位於您的應用程序/實用程序文件夾中)。 運行以下命令

touch ~/.bash_profile; open ~/.bash_profile

這將在您的默認文本編輯器中打開文件。

以 ANDROID SDK 為例:

您需要將路徑添加到您的 Android SDK 平台工具和工具目錄。 在我的示例中,我將使用“/Development/android-sdk-macosx”作為安裝 SDK 的目錄。添加以下行:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

保存文件並退出文本編輯器。 執行您的 .bash_profile 以更新您的 PATH。

source ~/.bash_profile

現在,每次打開終端程序時,PATH 都會包含 Android SDK。

將路徑變量添加到 OS X Lion

這非常簡單,在終端對我有用:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash shell

類似的回復在這里: http : //www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516

打開終端:

vi ~/.bash_profile

將更改應用到系統(無需重新啟動計算機):

source ~/.bash_profile

(也適用於 macOS Sierra 10.12.1)

我在 Maveric 上遇到了 Eclipse(從 GUI 開始,而不是從腳本開始)的問題,它沒有采用自定義 PATH。 我嘗試了上面提到的所有方法都無濟於事。 最后,我根據此處的提示找到了最簡單的工作答案:

  1. 轉到/Applications/eclipse/Eclipse.app/Contents文件夾

  2. 使用文本編輯器(或 XCode)編輯 Info.plist 文件,為具有完整路徑的環境變量添加LSEnvironment字典。 請注意,它還包括 /usr/bin 等:

     <dict> <key>LSEnvironment</key> <dict> <key>PATH</key> <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/android-ndk-r9b</string> </dict> <key>CFBundleDisplayName</key> <string>Eclipse</string> ...
  3. 重新加載應用程序的參數

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
  4. 重啟 Eclipse

讓我以一種非常多余的方式從我的個人例子中向您說明。

  1. 首先安裝JDK后,確保它已安裝。 在此處輸入圖片說明
  2. 與 Windows 不同,有時 macOS 或 Linux 會自動為您設置環境變量。 但情況並非總是如此。 所以讓我們檢查一下。 在此處輸入圖片說明 如果未設置環境變量,則緊跟在 echo $JAVA_HOME 之后的行將為空。 在你的情況下它必須是空的。

  3. 現在我們需要檢查我們是否有 bash_profile 文件。 在此處輸入圖片說明 你看到在我的例子中我們已經有了 bash_profile。 如果沒有,我們必須創建一個 bash_profile 文件。

  4. 創建一個 bash_profile 文件。 在此處輸入圖片說明

  5. 再次檢查以確保 bash_profile 文件在那里。 在此處輸入圖片說明

  6. 現在讓我們打開 bash_profile 文件。 macOS 使用其默認的 TextEdit 程序打開它。 在此處輸入圖片說明

  7. 這是保存環境變量的文件。 如果您打開了一個新的 bash_profile 文件,它必須為空。 就我而言,它已經為 python 編程語言和 Anaconda 發行版設置。 現在,我需要為 Java 添加環境變量,它只是添加第一行。 您必須逐字輸入第一行。 只是第一行。 保存並關閉 TextEdit。 然后關閉終端。 在此處輸入圖片說明

  8. 再次打開終端。 讓我們檢查是否設置了環境變量。 在此處輸入圖片說明

我走的是白痴路線。 將這些添加到 /etc/profile 的末尾

for environment in `find /etc/environments.d -type f`
do
     . $environment
done

創建了一個文件夾 /etc/environments 在其中創建一個名為“oracle”或“whatever”的文件,並添加了我需要全局設置的內容。

/etc$ cat /etc/environments.d/Oracle

export PATH=$PATH:/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export SQLPATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:/Library/Oracle/instantclient_11_2
export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin

更多細節,這可能對某人有幫助:

由於我自己的探索,我現在知道如何以 8 種不同方式中的 7 種方式設置環境變量。 我試圖讓 envar 通過我在 Xcode 下開發的應用程序。 我使用這些不同的方法設置“tracer”envars,以告訴我哪些方法將其納入我的應用程序范圍。 從下面,您可以看到在 Xcode 中編輯“方案”以添加參數是有效的,“putenv”也是如此。 沒有在該范圍內設置它的內容:~/.MACOS/environment.plist、特定於應用程序的 plist、.profile,並添加構建階段以運行自定義腳本(我在 Xcode [至少] 中找到了另一種方法來設置一個但忘記了我稱之為追蹤器的東西,現在找不到了;也許它在另一台機器上......)

GPU_DUMP_DEVICE_KERNEL 為 3

GPU_DUMP_TRK_ENVPLIST 為(空)

GPU_DUMP_TRK_APPPLIST 為(空)

GPU_DUMP_TRK_DOTPROFILE 為(空)

GPU_DUMP_TRK_RUNSCRIPT 為(空)

GPU_DUMP_TRK_SCHARGS 為 1

GPU_DUMP_TRK_PUTENV 為 1

...另一方面,如果我進入終端並說“設置”,它似乎唯一得到的是來自 .profile 的那個(我原以為它也會選擇 environment.plist,而我當然,有一次我確實在終端中看到了第二個示蹤劑 envar,所以從那以后可能有些事情變得不穩定了。漫長的一天......)

Step1:打開~/.bash_profile

現在一個文本編輯器打開:

Step2:變量名要大寫。 在這個例子中變量是NODE_ENV

Step3: export NODE_ENV=development

保存並關閉。

重新啟動系統。

完畢。

檢查環境變量:打開終端並輸入

echo $NODE_ENV 

建議在設置任何環境變量之前檢查默認終端 shell ,通過以下命令:

$ echo $SHELL
/bin/zsh

如果你的默認終端是/bin/zsh (Z Shell) 就像我的情況一樣(個人更喜歡 Z Shell),那么你應該在~/.zshenv文件中設置這些環境變量,內容如下(在這個例子中,設置JAVA_HOME環境變量,但同樣適用於其他人):

export JAVA_HOME="$(/usr/libexec/java_home)"

同樣,上面沒有提到的任何其他終端類型,您應該在其各自的終端 env 文件中設置環境變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM