Долгий запуск Terminal.app

30 December 2011 #mac #zsh

Так привык, что в Linux программы запускаются очень быстро, что очень долго не мог понять, почему в MacOS при запуске Terminal.app приходиться ждать от 5 до 10 секунд. При этом не важно, запускается новое окно или же только открывается новая вкладка.

В Интернете предлагали несколько вариантов решения, в которых все сводилось в основном к изменению настроек системы логирования. Сколько не пытался, это давало только кратковременное решение.

Смена командного интерпретатора

Все это время я использовал командный интерпретатор Bash. Настроил и очень комфортно себя в нем чувствовал. Менять его на что-то другое совершенно не хотелось. И тут совсем недавно вспомнил о том, что есть готовый набор настроек для командного интерпретатора Zsh. Я его уже пробовал в работе, но те настройки, что в итоге получились у меня, были для меня просто неудобными. Добиться комфорта мне не удавалось, поэтому я его забросил. Тут же предлагается уже настроенный интерпретатор, не думаю, что разработчики используют то, что не удобно им. Решил попробовать.

Настройки располагаются на сервере Github в репозитории oh-my-zsh. Там же описано, как производить установку к себе на компьютер.

Для автоматической установки необходимо дать команду:

$ wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

Если же проводить установку вручную, прийдется дать чуть больше команд:

  1. клонируем репозиторий

     $ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
    
  2. копируем заготовку настроек в домашнюю директорию

     $ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    
  3. устанавливаем zsh интерпретатором по умолчанию

     $ chsh -s /bin/zsh
    

Теперь можно перезапустить Terminal.app и посмотреть на то, что получилось. По умолчанию поведение терминала очень напоминает Bash, мне было комфортно. Плюс ко всему добавляются некоторые “плюшки”, типа исправление ошибок при наборе команд, дополнение параметров команд и т.п.

Настройка Zsh

Осталось только немного настроить оболочку под себя. Для этого открываем для редактирования файл ~/.zshrc и начинаем его править. Я лишь немного дописал список используемых расширений:

plugins=(git ruby textmate brew gem github npm node osx pow powder)

И затем изменил цветовую схему и настройки приглашения командного интерпретатора:

ZSH_THEME="robbyrussell"

Для использования данной темы оформления лучше всего изменить настройки цветового профиля, что используется в Terminal.app. Рекомендуется использовать цветовой профиль Solarized. Для его использования достаточно только скопировать архив с профилем на свой компьютер, либо клонировать репозиторий:

$ git clone git://github.com/altercation/solarized.git

В папке osx-terminal.app-colors-solarized располагаются файлы цветовых профилей для Terminal.app. Двойным кликом устанавливаем нужный вариант (их два – один светлый, другой темный), при этом открываются настройки Terminal.app с выбранным профилем Solarized. Я использую светлую схему. И в настройках терминала я изменил лиловый цвет на ярко-голубой (14 цвет). Именно он используется при показе директорий и лиловый был слишком светлым.

terminal-settings

Изменил так же шрифт на любимый мною Menlo. И в совокупности с расширениями теперь в директории с Git-репозиторием отображается его название и активная ветка:

terminal-git

Итоги

В настройках Terminal.app, в первой вкладке “Загрузка” в параметре “Открытие Shell” сменил значение по умолчанию на использование команды /bin/zsh. И теперь Terminal.app запускается максимум за 2 секунды в случае холодного старта. Если же приложение было уже запущено, то открытие новых вкладок и создание новых окон производиться мгновенно.

Таким образом не только решилась проблема с долгим запуском Terminal.app, но и работать в консоли стало гораздо удобнее! При этом, заметьте, мы приложили минимум усилий для настройки самого командного интерпретатора.