我想使用一个脚本来修改我的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
- 关闭终端应用
-
打开Xcode中的plist-file并编辑设置PermanentServer(复制并粘贴上面的字符串)
open ~/Library/Preferences/com.apple.Terminal.plist
- 保存并关闭plist-file
-
打开applesscript - app,复制/粘贴/运行以下代码:
do shell script "defaults read ~/Library/Preferences/com.apple.Terminal.plist"
-
打开终端应用程序,按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)只需将"设置"更改为您想要的,进入终端首选项