版本信息
Mac版本:macOS Mojave 10.14.4
GUI:STS
前提: ~/.bash_profile
設置了環境變量LOG_HOME
LOG_HOME=/Users/lucheng/logs
export LOG_HOME
$ source .bash_profile //重新加載該文件
$ echo $LOG_HOME
/Users/lucheng/logs
在STS中獲取環境變量為空
System.out.println(System.getenv().get("LOG_HOME"));
說明環境變量沒有起到作用,或者STS沒有讀取到
方案一
open /Applications/STS.app
(STS 換成別的即可)
缺點:每次打開工具 這樣打開,也夠惡心的。不推薦
方案二:
launchctl setenv 環境變量名 環境變量內容
重啟GUI即可
缺點:每次啟動需要先設置環境變量,要改進
又繼續查,系統啟動的時候自動設置
方法一
~/library/launchagents #用戶的進程 (詳細的看文獻)
編寫list文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>my.startup</string> <key>ProgramArguments</key> <array> <string>sh</string> <string>-c</string> <string> launchctl setenv LOG_HOME /Users/lucheng/logs </string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
方法二
編寫腳本
do shell script "launchctl setenv LOG_HOME /Users/lucheng/logs"
設置啟動執行腳本
系統偏好設置-用戶組/用戶-登錄項 選擇腳本
遺留問題:
環境變量設置了兩遍,也沒有統一的地方修改。
launchctl setenv LOG_HOME $LOG_HOME 環境變量
本來是支持環境變量的,不知道什么原因 重啟以后取不到環境變量的值,估計與啟動順序有關,暫時這樣處理。有好的方案 煩請留言
參考文獻:
Mac OS X 設置環境變量 (launchd.conf 測試該版本的系統不可用)