来自终端或来自 AppleScript 的 运行 命令时的不同结果

Different result when running command from terminal or from AppleScript

当我在终端中 运行 defaults read 'com.apple.Safari' 时,我得到了很多信息,尤其是我感兴趣的值:defaults read 'com.apple.Safari' 'NSWindow Frame BrowserWindowFrame'.

但在 AppleScript 中 运行ning 时,结果完全不同:

do shell script "defaults read 'com.apple.Safari'"
(*
{
    ResetCloudHistory = 1;
    cloudBookmarksMigrationEligibilityDataInvalidated = 1;
}
*)

所以当我 运行 AppleScript 询问我感兴趣的密钥时,我收到错误消息:

The domain/default pair of (com.apple.Safari, NSWindow Frame BrowserWindowFrame) does not exist

我认为这是出于安全考虑。

有谁知道我可以让我的 applescript 访问此设置的方法 并且 稍后写入它?

P.S。使用 Mac OS 10.14 莫哈韦

为了在macOS Mojave[=55=中读取沙盒版本的com.apple.Safari.plist ] 从 Script Editor,您需要将 Script Editor 添加到:System Preferences > 安全与隐私 > 隐私 > 完整磁盘访问.

然后:

do shell script "defaults read 'com.apple.Safari' 'NSWindow Frame BrowserWindowFrame'"

Returns,例如:

"88 73 1264 804 0 0 1440 877 "

请注意,如果 do shell script 命令 通过其他 方法 是 运行,则 application 涉及 method 需要添加到:System Preferences > Security &隐私 > 隐私 > 完整磁盘访问


macOS Mojave 中,要查看差异,来自 Terminal:

$ defaults read ~/Library/Preferences/com.apple.Safari.plist 
{
    IncludeDevelopMenu = 1;
    WebKitDeveloperExtrasEnabledPreferenceKey = 1;
    "WebKitPreferences.developerExtrasEnabled" = 1;
}
$


$ defaults read ~/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist 'NSWindow Frame BrowserWindowFrame'
88 73 1264 804 0 0 1440 877 
$

不过,后面的command使用do shell script command:

do shell script "defaults read 'com.apple.Safari' 'NSWindow Frame BrowserWindowFrame'"

根据返回的内容,它显然正在访问 沙盒 版本的 com.apple.Safari.plist