Перезагрузить 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, когда он работает, или остановить его, переписать файл при выходе.
4 ответа
Для меня это звучит как классическая проблема с курицей и яйцом.
Терминал записывает свои текущие предпочтения при выходе и перезаписывает любые ваши изменения, однако вам необходимо загрузить Терминал, чтобы иметь оболочку для внесения этих изменений с помощью PlistBuddy.
Я могу придумать два решения здесь:
1) написать небольшой скрипт, который вы можете запустить из нетерминального процесса... может быть, Applescript или что-то, что вы можете передать в system
звонить из крошечного Macintosh-приложения?:-)
2) просто измените "Настройки" на то, что вы хотите, перейдя в настройки терминала.
В 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
Команда "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 минуту (как минимум). Теперь запустите терминал, и вы увидите, что настройки были изменены.
Мое адаптированное решение работает в OS X Mavericks (тоже).
В Примере я добавляю новый PermanentServer для подключения ssh в Терминале -p 22 www.example.com -l user -L 33306:localhost:3306
- Закройте терминал-приложение
Откройте plist-файл в Xcode и отредактируйте настройку PermanentServer (скопируйте и вставьте строку выше)
open ~/Library/Preferences/com.apple.Terminal.plist
- Сохраните и закройте plist-файл
Откройте Applescript-App и скопируйте / вставьте / запустите следующий код:
do shell script "defaults read ~/Library/Preferences/com.apple.Terminal.plist"
Откройте Terminal-App и нажмите SHIFT+CMD+K и посмотрите в список серверов
Спасибо за этот совет здесь: http://www.cnet.com/how-to/how-to-manually-edit-defaults-plist-files-in-mavericks/