重新加载com.apple.Terminal.plist

owe*_*ter 6 macos terminal reload defaults

我想使用脚本来修改我的Mac终端的首选项,因此它可以在退出终端时关闭窗口.我在脚本中使用此命令:

/usr/libexec/PlistBuddy -c "Set \"Window Settings\":Basic:shellExitAction 0" ~/Library/Preferences/com.apple.Terminal.plist

现在问题是在执行脚本之后,.plist文件被更改了,我检查了一下

defaults read com.apple.Terminal "Window Settings"

现在值为0.

但问题是终端没有重新加载.plist文件,当我退出终端时,它再次将.plist文件重写为'2'.所以我的问题是如何让终端在运行时重新加载.plist文件,或者在退出时停止重写文件.

miv*_*ivk 10

在10.9(小牛队)中,优先级被缓存.从终端覆盖您的首选项后,您需要阅读它们

defaults read com.apple.Terminal
Run Code Online (Sandbox Code Playgroud)

然后退出并重新启动终端.

我的服务器上有终端首选项,因此我在新机器或新配置文件中使用的完整命令是:

curl -o ~/Library/Preferences/com.apple.Terminal.plist  http://example.com/xyz/com.apple.Terminal.plist.`sw_vers \
| grep 'ProductVersion:' \
| grep -o '10\.[0-9]*'` \
&& defaults read com.apple.Terminal
Run Code Online (Sandbox Code Playgroud)


Mic*_*ann 2

对我来说,这听起来像是一个经典的先有鸡还是先有蛋的问题。

终端在退出时写出其当前首选项并覆盖您的任何更改,但您需要加载终端才能有一个 shell 来使用 PlistBuddy 进行这些更改。

我在这里可以想到两种解决方案:

1) 编写一个可以从非终端进程启动的小脚本...也许是 Applescript 或者可以system从小型 Macintosh 应用程序传递到调用中的东西?:-)

2) 只需通过终端首选项将“设置”更改为您想要的内容即可。

  • 好吧,我找到另一种方法来解决这个问题。只需杀死脚本后的所有终端进程即可。由于终端不会以正常方式退出,因此不会更改写入 .plist 文件。 (3认同)