我正在尝试在 Mac 上设置一个夜间任务来编辑文件,然后将该文件复制到我的 Google 云端硬盘,该文件可通过 Google 桌面集成直接从我的 Mac 文件系统访问。我有一个简单的 bash 脚本来测试它,该脚本在终端中执行时可以正常工作,但当我尝试将脚本添加到 cron 或通过 launchctl 执行时会失败。示例脚本是:
#!/bin/bash
echo "test data" > /Users/<user>/Scripts/Scratch/testfile.txt
cp /Users/<user>/Scripts/Scratch/testfile.txt /Users/<user>/Google*/My*/copied.txt
exit 0
上面的“
cp /Users/<user>/Scripts/Scratch/testfile.txt /Users/<user>/Google\ Drive/My\ Drive/copied.txt
当我在终端中运行脚本时,转义空格版本也可以工作。我还尝试创建一个指向 Google 驱动器的链接(硬链接和符号链接),以避免脚本中出现空格或“*”解决方法,但这在 cron 或 launchctl 中也不起作用。当 cron 作业使用带有转义空格的脚本运行时,我得到的错误是这样的:
cp: /Users/<user>/Google Drive/My Drive/copied.txt: Operation not permitted
当我尝试使用“*”来避免路径中出现空格时(同样仅在 cron 中;在终端中工作正常),出现的错误是:
cp: /Users/<user>/Google*/My*/copied.txt: No such file or directory
很难解释为什么所有这些方法都在终端中起作用,但在 cron 或 launchctl 中不起作用,即使我到处都使用绝对路径。
MacBook Pro 2 GHz 四核 Intel Core i5,16 GB RAM,运行 Sonoma 14.5
在 Apple 支持网站上看到解决方案后,我尝试给予 cron 完整磁盘访问权限,这实际上解决了 cron 的问题。但是,即使授予 launchd 和 launchctl 相同的完全磁盘访问权限后,launchd 的问题仍然存在。