在Mac下为GUI程序设定环境变量

Posted tusheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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文件

 


 

以上是关于在Mac下为GUI程序设定环境变量的主要内容,如果未能解决你的问题,请参考以下文章

linux下为anaconda配置环境变量

如何在Windows下为Qt配置环境变量

我可以在没有 MAC 的情况下为 iOS 开发 Sencha Touch 应用程序吗?

Mac下Eclipse读取不到环境变量

Linux下为mysql添加环境变量

启动使用来自 QT Gui 应用程序的环境变量的控制台应用程序