在Mac下為GUI程序設定環境變量


 

版本信息
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 使用launchd定制定時任務和自啟動服務

Mac服務管理-Launchd(轉)

利用 Launchd 定制 Mac 啟動任務

Mac OS X 設置環境變量 (launchd.conf 測試該版本的系統不可用)

創建一個environment.plist文件

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM