首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从launchctl获取文件

如何从launchctl获取文件
EN

Stack Overflow用户
提问于 2019-03-23 07:52:03
回答 1查看 491关注 0票数 0

我正在尝试从launch agentsource一个文件,但是不清楚如何实现(或者它是否可能实现)。我知道对单个变量执行setenv很容易,但我需要引入一大堆变量,所以source是我需要的。

代码语言:javascript
复制
<?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.sourcerer</string>
    <key>ProgramArguments</key>
    <array>
        <string>source</string>
        <string>my_file.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/path/to/source</string>
</dict>
</plist>

这个加载和启动看起来没有任何问题:

代码语言:javascript
复制
$ launchctl load ~/Library/LaunchAgents/my.sourcerer.plist
$ launchctl start ~/Library/LaunchAgents/my.sourcerer.plist

但是,当我使用printenv时,我的源环境变量都不会出现。如果我手动执行此操作:

代码语言:javascript
复制
$ source /path/to/source/my_file.sh
$ printenv

然后所有的变量都会显示出来。为什么launchctl代理似乎不能将变量加载到我的环境中?

EN

回答 1

Stack Overflow用户

发布于 2019-03-23 13:04:40

根据对这个问题的评论,我将冒险尝试回答这个问题。

您似乎希望在登录时启动程序,而不是在打开第一个终端会话后手动启动。解决方案是创建一个脚本,其中包含初始化环境所需的source命令。然后将该脚本路径名设置为~/Library/LaunchAgents/my.sourcerer.plist配置的第一个参数。

您还可以通过launchctl setenv静态设置这些变量。但我不推荐这种方法,因为它显然不是动态的。也就是说,如果sourced脚本的输出发生变化,则每个进程继承的静态设置的env变量将不会change.jj

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55309203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档