gpt4 book ai didi

ruby - 无法从 OSX 中的 Launch Agent 运行终端通知程序(Ruby 应用程序)。环境变量问题?

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:45 26 4
gpt4 key购买 nike

我想定期弹出一个通知(我有一个“当前任务”我想在番茄钟风格的应用程序中显示)。我正在尝试使用用户启动代理来安排任务,该任务成功运行 .sh.py 脚本。但是,我无法安排 terminal-notifier 成功启动。其他阅读的一个可能原因是 Launch Agent 进程的环境变量与通常登录的用户环境不同。

我通过 gem install terminal-notifier 安装 terminal-notifier

myusername@Nathans-MacBook-Pro~/bin$ which terminal-notifier 
/Users/myusername/.rvm/gems/ruby-2.0.0-p0/bin/terminal-notifier

这是我的 shell 脚本 reminder.sh:

#!/bin/sh
date >>/tmp/reminder.log
terminal-notifier -message "message txt" -title "title txt"

直接从终端运行此脚本会按预期工作:时间戳记录在 reminder.log 中并出现通知弹出窗口。但是,当我尝试通过启动代理运行它时,它失败了。

我在 ~/Library/LaunchAgents/ 中放入了一个包含以下内容的文件 com.myusername.Reminder.plist

<?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>com.myusername.Reminder</string>
<key>Program</key>
<string>/Users/myusername/bin/reminder.sh</string>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>10</integer>
</dict>
</plist>

创建这个文件后我会加载它

launchctl 加载 ~/Library/LaunchAgents/com.myusername.Reminder.plist

和(不确定是否需要,因为它包括 RunAtLoad)

launchctl 启动 com.myusername.Reminder

虽然它每 10 秒成功地向文件记录一个时间戳,但它不会触发通知。

关于如何成功运行的任何提示?

谢谢!

最佳答案

你的假设是正确的。 launchd(8) 不知道在哪里可以找到 terminal-notifier。简单的解决方案是使用绝对路径调用 terminal-notifier。像这样调整你的 shell 脚本:

#!/bin/sh
date >>/tmp/reminder.log
/Users/myusername/.rvm/gems/ruby-2.0.0-p0/bin/terminal-notifier -message "message txt" -title "title txt"

或者,您始终可以使用 launchd(8) 键 EnvironmentVariables 扩展 PATH 环境变量。您的工作定义中的相应部分应如下所示:

<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/Users/myusername/.rvm/gems/ruby-2.0.0-p0/bin</string>
</dict>

关于ruby - 无法从 OSX 中的 Launch Agent 运行终端通知程序(Ruby 应用程序)。环境变量问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16616441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com