重新加载com.apple.Terminal.plist



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

在10.9 (Mavericks)中,首选项被缓存。在从Terminal覆盖您的首选项之后,您需要使用

读取它们
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

我改编的解决方案也可以在OS X Mavericks上运行。

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

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

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

  3. 保存并关闭plist-file
  4. 打开applesscript - 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/

"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分钟。现在启动Terminal,您会发现设置已经更改。

听起来像是一个经典的鸡和蛋的问题。

Terminal在退出时写出它当前的首选项,并覆盖你的任何更改,但是你需要加载Terminal,以便有一个shell来使用PlistBuddy进行这些更改。

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

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

2)只需将"设置"更改为您想要的,进入终端首选项

相关内容

最新更新