## Вводная часть
### Что такое Bash
**Bash** (Bourne-Again SHell) — это командная оболочка и язык сценариев для Linux, macOS и других Unix-подобных систем. Это улучшенная замена оригинальной оболочки Bourne shell (`sh`).
**Коротко это:**
- **Интерпретатор команд** — позволяет взаимодействовать с системой через текстовые команды.
- **Скриптовый язык** — для автоматизации задач (скрипты `.sh`).
- **Стандарт** — оболочка по умолчанию в большинстве дистрибутивов Linux и в macOS (до версии Catalina).
- **Мощный инструмент** — поддерживает управление процессами, переменные, условия, циклы, функции.

**Примеры использования:**
- Запуск программ
- Управление файлами
- Автоматизация рутинных операций
- Администрирование систем

Если выполнить fastfetch в терминале, то напротив shell можно увидеть, какой выбран для пользователя. Почти всегда, по умолчанию это bash.

![[fastfetch.png]]

В Kali Linux используется не bash, а zsh. 
### Что такое zsh
**Zsh** — современная командная оболочка как Bash, но с удобствами для пользователя.
**Чем отличается от Bash:**
- Умнее (лучше подсказывает команды, исправляет опечатки)
- Красивее (легко настраивать вид)
- Удобнее (автодополнение работает из коробки)

**Почему в Kali именно Zsh:**
1. **Готовая настройка** — сразу выглядит круто с цветами и подсказками
2. **Удобство** — помогает быстрее работать (особенно с длинными командами)
3. **Модно** — многие хакеры и разработчики перешли на Zsh
4. **Безопасность** — некоторые фишки полезны для пентестов

Почему бы тогда везде не использовать zsh вместо bash, если он лучше.
Ответ:
1. **Привычка** — Bash везде стоит по умолчанию, все к нему привыкли
2. **Совместимость** — Bash-скрипты работают везде одинаково, Zsh может ломать старые скрипты
3. **Минимализм** — Bash проще и легче, в серверах лишнее не нужно
4. **Консервативность** — "работает — не трогай"

**Если сравнить:**  
Bash — как универсальная отвертка, которая всегда под рукой.  
Zsh — как многофункциональный швейцарский нож с удобной ручкой для повседневного использования.

### Устанавливаем zsh
epm i zsh

### Выбираем zsh для пользователя
Открываем приложение "Управление системой"
![[управление системой.png]]

 
![[управление пользователями.png]]
Перходим в раздел управление локальными аккаунтами.

![[выбираем zsh.png]]
Выбираем zsh для своего пользователя

Перезаходим в систему или перезагружаем пк.
Готово, теперь у нас в системе стоит zsh, но выглядит не сильно лучше стандартного bash. В чем же дело? У нас не настроен zshrc

### Что такое zshrc

**Zshrc** — это скрытый файл настроек zsh. Находится в домашней директории. Его можно найти введя в терминале ls -a или в файловом менеджере, нажав ctrl + h, чтобы показать скрытые файлы.  

**Что делает:**
- Автоматически загружается при каждом запуске терминала
- Хранит твои персональные настройки Zsh

**Что в нём:**
- Псевдонимы команд (`alias ll='ls -la'`)
- Цвета и вид приглашения
- Настройки автодополнения
- Переменные окружения (PATH и др.)
- Плагины и темы

**Проще:** Это как файл "профиля" для твоего терминала — всё, что ты настроил, сохраняется тут.
Если прописать в этот файл какую-нибудь команду или несколько, они будут исполняться каждый раз при запуске терминала.


### Добавим себе kali zshrc

Переходим по ссылке 
https://gist.github.com/noahbliss/4fec4f5fa2d2a2bc857cccc5d00b19b6

или вводим в поиске kali zshrc:
![[Screenshot From 2026-02-06 17-55-51.png]]

Копируем весь текстовый файл
![[Screenshot From 2026-02-06 17-56-11.png]]

Открываем текстовый редактор и вставляем конфиг в пустой документ.
![[Screenshot From 2026-02-06 17-56-59.png]]
Нажимаем на 3 полоски справа сверху, сохранить как.
![[Screenshot From 2026-02-06 17-57-15.png]]

Сохраняем в документы или куда удобно с названием .zshrc
Точка в начале обязательна. 
![[Screenshot From 2026-02-06 17-59-45.png]]

Копируем и вставляем в домашнюю директорию.
![[Screenshot From 2026-02-06 17-58-31.png]]

В конфиге используется подсветка синтаксиса и подскази ввода. Чтобы эти плагины заработали, надо их установить. Устанавливаем подсветку через epm:
epm i zsh-syntax-highlighting
![[Screenshot From 2026-02-06 18-00-45.png]]

Подсветка устанавливается по тому пути, который используется в конфиге, а подсказки нет, поэтому установим вручную. Переходим в репозиторий
![[Screenshot From 2026-02-06 18-02-03.png]]
https://github.com/zsh-users/zsh-autosuggestions

Откроем конфиг
nano .zshrc

Видно, что плагин подсказки синтаксиса конфиг ожидает по пути /usr/share/zsh-autosuggestions/
поэтому скачаем его прямо туда 
![[Screenshot From 2026-02-06 18-02-58.png]]

В репозитории в файле INSTALL.md написано, как установить вручную, но нам надо изменить путь
![[manual.png]]

команда 
git clone git clone https://github.com/zsh-users/zsh-autosuggestions /usr/share/zsh-autosuggestions/
![[Screenshot From 2026-02-06 18-04-04.png]]

чтобы применить, используем команду
source .zshrc
![[Screenshot From 2026-02-06 18-04-13.png]]

Мне не нравится разделитель в стиле кали, поэтому я его заменил на @. 

Копируем символ кали в терминале. Убеждаемся, что выбрана английская раскладка, иначе копирование не будет работать. Выделяем его курсором и нажимаем ctrl + shift + c. 

Открываем конфиг в nano
nano .zshrc

Включаем поиск, ctrl + f. Вставляем ctrl+shift+v. 
![[собачка.png]]
Заменяем на @. 

Выходим на ctrl+x, сохраняем изменения. Еще раз вводим source .zshrc

Готово. Теперь у нас такой же терминал, как в кали линукс.

Вот описание его особенностей:
#### **Основные опции (setopt)**
- `autocd` – переход в каталог по имени без `cd`
- `interactivecomments` – разрешение комментариев в интерактивном режиме
- `nonomatch` – скрытие ошибок при отсутствии совпадений для шаблонов
- `promptsubst` – подстановка команд в промпте
#### **Настройки клавиатуры (bindkey)**
- Emacs-стиль привязок клавиш (Ctrl+A/E для начала/конца строки)
- Дополнительные удобные комбинации:
    - Ctrl+U – удаление до начала строки
    - Ctrl+Стрелки – переход по словам
    - Shift+Tab – отмена последнего действия
#### **Система дополнения (completion)**
- Автозагрузка и кэширование системы дополнений
- Цветное меню выбора при автодополнении
- Умное сопоставление с учетом регистра
- Автоматическое обновление кэша дополнений
#### **Управление историей**
- История сохраняется в `~/.zsh_history`
- Игнорирование дубликатов команд
- Игнорирование команд, начинающихся с пробела
- Алиас `history` для показа всей истории
#### **Настраиваемый промпт**
- Двухстрочный промпт по умолчанию (Kali-стиль)
- Переключение между стилями по `Ctrl+P`
- Отображение:
    - Имя пользователя и хоста
    - Текущий каталог
    - Виртуальное окружение Python
    - Chroot окружение
![[p1.png]]
![[p2.png]]
#### **Синтаксическое выделение**
- Подсветка синтаксиса команд (при наличии пакета)
- Обширная настройка цветов для разных элементов
#### **Автодополнение на основе истории**
- Контекстные предложения при наборе команд
- Серый цвет для подсказок
#### **Цветовая поддержка**
- Автоматическое определение поддержки цветов терминалом
- Цветной вывод `ls`, `grep`, `diff`, `ip`
- Цветное отображение страниц man
![[colors.png]]
#### **Полезные алиасы**
- `ll`, `la`, `l` – короткие варианты `ls`
- Цветной вывод утилит
![[ls.png]]
#### **Дополнительные функции**
- Динамический заголовок окна терминала
- Настраиваемый формат вывода `time`
- Поддержка command-not-found

Конфигурация хорошо сбалансирована между функциональностью и производительностью, с акцентом на удобство работы и визуальную обратную связь. Особенно заметно влияние Kali Linux в стиле промпта и предустановленных пакетов расширений.