我将默认命令迁移到 PlistBuddy,它输出完全相同的 plist,但无法正常工作

Posted

技术标签:

【中文标题】我将默认命令迁移到 PlistBuddy,它输出完全相同的 plist,但无法正常工作【英文标题】:I migrate defaults command to PlistBuddy, and it outputs exact same plist, but not working right 【发布时间】:2020-03-24 06:27:56 【问题描述】:

情况

我这里写了很多defaults命令,就是在dock上设置应用程序。

https://github.com/ryuta69/dotfiles/blob/master/macos/lib/dockitem.applescript

然后,我将它们迁移到下面的 PlistBuddy。

https://github.com/ryuta69/dotfiles/blob/master/macos/lib/dockitem.zsh

它们在 com.apple.dock 中生成持久应用。 defaults 命令可以正常工作,并且可以将应用程序设置为停靠栏。

但是,PlistBuddy 一个不起作用,它不会在 Dock 上设置任何应用程序,即使 com.apple.dock 中的持久应用程序是相同的。

osascript dockitem.applescript
defaults read com.apple.dock > a.txt

zsh dockitem.zsh
defaults read com.apple.dock > b.txt

diff a.txt b.txt
# there is no difference

我也做了Killall Dock(在脚本中)。

我是否忘记了使用 PlistBuddy 执行的任何步骤?除了Killall Dock,我找不到任何信息。

【问题讨论】:

【参考方案1】:

啊,我明白了。 我需要在killall Dock 之前killall cfprefsd

首选项被缓存,默认值将删除缓存,但 PlistBuddy 不会。我要杀了它。

【讨论】:

以上是关于我将默认命令迁移到 PlistBuddy,它输出完全相同的 plist,但无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上的 PlistBuddy

Docker教程系列八:Docker备份与迁移(完)

如何使用命令替换来使用 PlistBuddy

使用 plistBuddy 获取值数组

如何使用 PlistBuddy 将数组添加到 Plist?

postgres相关命令