ZSH, также называемая оболочкой Z, является расширенной версией Bourne Shell (sh) с множеством новых функций и поддержкой плагинов и тем. Поскольку она основана на той же оболочке, что и Bash, ZSH имеет многие из тех же функций, и переключиться на него очень просто.
Чем ZSH лучше Bash?
У ZSH слишком много функций, чтобы перечислять их здесь, часть из них — лишь незначительные улучшения в Bash, но вот некоторые из основных:
- Автоматический cd: просто введите имя каталога
- Рекурсивное расширение пути: например, «/u/lo/b» заменяется на «/usr/local/bin»
- Исправление орфографии и приблизительное завершение: если вы допустили незначительную ошибку при вводе имени каталога, ZSH исправит её за вас.
- Поддержка плагинов и тем: ZSH включает множество различных фреймворков плагинов.
Поддержка плагинов и тем, вероятно, самая крутая функция ZSH, и на этом мы сосредоточимся здесь.
Установка ZSH
macOS
Попробуйте
zsh --version
перед установкой из Homebrew. Если он новее 4.3.9, возможно, всё будет в порядке. Желательно новее или равно 5.0.
brew install zsh
Чтобы установить zsh в качестве оболочки по умолчанию, выполните следующие действия, предполагая, что по умолчанию установлена Homebrew.
Последние версии Mac OS:
chsh -s /usr/local/bin/zsh
Mac OS High Sierra и более ранние версии:
chsh -s /bin/zsh
Предполагая, что у вас установлен Homebrew. В противном случае большинство версий macOS по умолчанию поставляют zsh, но обычно это более старая версия. В качестве альтернативы вы также можете использовать MacPorts
sudo port install zsh zsh-completions
Ubuntu, Debian и производные (Windows 10 WSL | Собственное ядро Linux с Windows 10 build 1903, Kali Linux, Linux Mint, elementary OS, Zorin OS, Raspbian, MX Linux, Deepin)
sudo apt install zsh
OpenSUSE
zypper install zsh
Arch Linux or Manjaro
pacman -S zsh
Void Linux
xbps-install zsh
Fedora
dnf install zsh
OpenBSD
Для установки этого пакета:
pkg_add zsh
FreeBSD
Для установки этого пакета:
pkg install zsh
Для установки порта:
cd /usr/ports/shells/zsh/ && make install clean
Чтобы уменьшить использование памяти, необязательно включите параметры zsh-mem с помощью
make config
перед запуском "make install".
Centos/RHEL
sudo yum update && sudo yum -y install zsh
Cygwin
Установите пакет zsh с помощью установщика. К сожалению, Cygwin не имеет стандартного интерфейса командной строки. Однако вы можете настроить apt-cyg и установить zsh следующим образом:
apt-cyg install zsh
Самый простой способ изменить оболочку по умолчанию — установить переменную пользовательской среды SHELL. Найдите «Изменить переменные среды для вашей учётной записи» ("Edit Environment variables for your account"), чтобы открыть окно переменных среды, создайте новую переменную с именем «SHELL» и присвойте ей значение «/usr/bin/zsh/».
В качестве альтернативы: откройте Cygwin (в BASH), затем введите:
sudo nano ~/.bashrc
После открытия файла .bashrc добавьте эту строку в самый верх:
exec zsh
Закройте и сохраните файл. Закройте и снова откройте Cygwin. Он будет выполнять команду каждый раз, когда вы загружаете терминал и запускаете оболочку zsh.
Solus
eopkg it zsh
Funtoo/Gentoo
emerge app-shells/zsh
Alpine Linux
apk add zsh
MSYS2
pacman -S zsh
Termux (Android)
Termux — эмулятор терминала для Android, но имеет современные функции, такие как в Debian и Ubuntu (Termux имеет оболочку Bash и программы, подобные GNU Busybox). Для менеджера пакетов Termux использует менеджер пакетов Debian/Ubuntu, APT. Чтобы установить пакет, выполните эту команду:
pkg install zsh
Команда выглядит как менеджер пакетов FreeBSD (pkg). Или вы можете запустить эту команду:
apt update && apt upgrade apt install zsh
Чтобы установить zsh в качестве оболочки по умолчанию, выполните эту команду:
chsh -s /data/data/com.termux/files/usr/bin/zsh
Или:
chsh -s $(which zsh)
Установка Oh-My-Zsh
Oh-My-Zsh — это самый популярный фреймворк для ZSH, который также имеет множество встроенных плагинов и тем. Есть также пара других фреймворков для плагинов, в том числе Antigen, который является полным менеджером пакетов для ZSH, но Oh-My-Zsh имеет множество встроенных плагинов и хорошо выполняет свою работу.
У Oh-My-Zsh есть простой сценарий установки, который вы можете запустить:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Оттуда вы можете включать и отключать плагины, добавляя их в свой файл .zshrc, расположенный в вашем каталоге ~.
Вы можете получить полный список плагинов в репозитории Oh-My-Zsh.
Темы
Существует множество тем, но некоторые считают, что powerlevel10k одна из лучших. Она добавляет выровненное по правому краю информационное окно, интеграцию с git и историей команд, невероятную настройку и оборачивает всё это в приятный интерфейс на основе плагина powerline для vim.
Вы захотите использовать iTerm на macOS или на любом терминале с 24-битным цветом, чтобы получить максимальную отдачу от powerlevel10k (или любой другой темы ZSH).
Чтобы настроить powerlevel10k (если вы установили Oh-My-Zsh), просто клонируйте репозиторий в папку пользовательских тем .oh-my-zsh:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
Затем вам нужно включить его в .zshrc:
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>! ~/.zshrc
После загрузите .zshrc и вы должны увидеть внесённые изменения.
source ~/.zshrc
При желании вы можете настроить приглашение по умолчанию, указав POWERLEVEL9K_LEFT_PROMPT_ELEMENTS в вашем .zshrc. Вот мой с минимальным приглашением командной строки:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs dir rbenv) POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(root_indicator background_jobs status load)
Вы можете найти полную документацию для powerlevel10k в репо.
Связанные статьи:
- Как узнать, какая оболочка используется в Linux (87%)
- Как вывести значения всех переменных и переменных окружения в Linux (87%)
- Что такое TTY в Linux? (и как использовать команду tty) (63.1%)
- Скрипты, выполняемые при запуске Bash (57.6%)
- Как проверить использование памяти на Linux (50%)
- Уроки по Awk (RANDOM - 13.1%)
Bash навсегда!
Тоже люблю Bash ))))
Серьёзно? Добавьте "по-моему", не говорите за всех, пожалуйста.
Согласен с замечанием и исправил в статье. На самом деле, своего мнения по данному вопросу у меня нет, а это перевод англоязычной статьи или документации. В Kali Linux, где ZSH теперь используется по умолчанию, я не могу привыкнуть к этой оболочке. А поведение Ctrl+u, которое стирает всю строку (в Bash стирается «отсюда и до начала строки») уже истрепало все нервы ))))) На основной системе использую Bash.