6

我想使用脚本来修改我的 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 文件,或者在退出时停止它重写文件。

4

4 回答 4

10

在 10.9 (Mavericks) 中,首选项被缓存。从终端覆盖您的首选项后,您需要阅读它们

defaults read com.apple.Terminal

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

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

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
于 2014-10-25T15:56:52.970 回答
3

我改编后的解决方案(也可以在 OS X Mavericks 中运行)。

在示例中,我为终端中的 ssh 连接添加了一个新的 PermanentServer-p 22 www.example.com -l user -L 33306:localhost:3306

  1. 关闭终端应用程序
  2. 在Xcode中打开 plist 文件并编辑设置PermanentServer(复制并粘贴上面的字符串)

    open ~/Library/Preferences/com.apple.Terminal.plist

  3. 保存并关闭 plist 文件
  4. 打开 Applescript-App 并复制/粘贴/运行以下代码:

    do shell script "defaults read ~/Library/Preferences/com.apple.Terminal.plist"

  5. 打开终端应用程序并按 SHIFT+CMD+K 并查看服务器列表

感谢这里的提示:http ://www.cnet.com/how-to/how-to-manually-edit-defaults-plist-files-in-mavericks/

于 2014-04-25T10:04:36.153 回答
3

“at”命令可以在将来的某个时间运行命令。

$ at now + 1 minute
/usr/libexec/PlistBuddy -c "Set \"Window Settings\":Basic:shellExitAction 0" ~/Library/Preferences/com.apple.Terminal.plist
^D          <<< press CTRL-D
job 3 at Mon Apr 24 15:34:00 2017
$ exit

现在退出所有终端。等待 1 分钟(至少)。现在启动终端,您会发现设置已更改。

于 2017-04-24T19:34:23.610 回答
2

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

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

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

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

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

于 2011-12-02T00:08:24.660 回答