Перезагрузить com.apple.Terminal.plist - PullRequest
6 голосов
/ 02 декабря 2011

Я хочу использовать скрипт для изменения настроек моего терминала для моего 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 ]

10 голосов
/ 25 октября 2014

В 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
3 голосов
/ 25 апреля 2014

Мое адаптированное решение работает в OS X Mavericks (тоже).

В примере я добавляю новый PermanentServer для ssh-соединения в терминале -p 22 www.example.com -l user -L 33306:localhost:3306

  1. Закройте терминал-App
  2. Открыть plist-файл в Xcode и отредактировать настройку PermanentServer (скопировать и вставить строку выше)

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

  3. Сохраните и закройте plist-файл
  4. Откройте приложение Applescript и скопируйте / вставьте / запустите следующий код:

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

  5. Откройте Terminal-App и нажмите SHIFT + CMD + K и просмотрите список серверов

Спасибо за эту подсказку здесь: http://www.cnet.com/how-to/how-to-manually-edit-defaults-plist-files-in-mavericks/

2 голосов
/ 02 декабря 2011

Для меня это звучит как классическая проблема с курицей и яйцом.

Терминал записывает свои текущие настройки при выходе и перезаписывает любые ваши изменения, однако вам необходимо загрузить Терминал, чтобы иметь оболочку для внесения этих изменений с помощью PlistBuddy.

Я могу придумать два решения здесь:

1) написать небольшой скрипт, который вы можете запустить из нетерминального процесса ... может быть, Applescript или что-то, что вы можете передать в system вызов из крошечного приложения Macintosh? : -)

2) просто измените «Настройки» на то, что вы хотите, перейдя в настройки терминала.

1 голос
/ 24 апреля 2017

Команда "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 минуту (как минимум).Теперь запустите Терминал, и вы увидите, что настройка была изменена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...