在Mac下为GUI程序设定环境变量 Mac服务管理-Launchd(转)

版本信息
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 换成别的即可)

扫描二维码关注公众号,回复: 6108039 查看本文章

缺点:每次打开工具 这样打开,也够恶心的。不推荐

方案二:

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文件

 

猜你喜欢

转载自www.cnblogs.com/tusheng/p/10805717.html