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

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

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

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

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

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

[oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh
	"robbyrussell / oh-my-zsh"

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

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

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

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

```shell
$ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
```

2. копируем заготовку настроек в домашнюю директорию

```shell
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
```

3. устанавливаем zsh интерпретатором по умолчанию

```shell
$ chsh -s /bin/zsh
```

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

## Настройка Zsh

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

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

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

```conf
ZSH_THEME="robbyrussell"
```

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

[Solarized]: http://ethanschoonover.com/solarized
	"Solarized - Ethan Schoonover"

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

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

![terminal-settings](https://static.juev.org/2011/12/terminal-settings.png)

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

![terminal-git](https://static.juev.org/2011/12/terminal-git.png)

## Итоги

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

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

