Install ZSH on Linux and make it your default Shell
B ash (Bourne Again Shell) is the default command-line shell on many distributions. Zsh (Z Shell) is a powerful shell that operates as both an interactive shell and as a scripting language interpreter.
Check your current shell:
1. Z Shell
Please replace pacman in the following codelines by your distro package manager: apt, dnf etc.
Install the zsh package:
Test it by running zsh in your terminal. If you were using bash, you’ll switch to the zsh prompt. The prompt model will be different, since you’re using a different config file, not your classic .bashrc:
For basic configuration run the following command:
Follow the recommended options, save and exit.
2. Oh-My-Zsh & plugins
Now, let’s install a powerful additional program: Oh My Zsh
A delightful community-driven (with 1,300+ contributors) framework for managing your zsh configuration. Includes 200+ optional plugins, over 140 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.
This framework will easily make Zsh friendlier by improving its usability, through plugins and themes.
zsh , wget and git should be installed first. Install the program:
I recommend installing 4 additional plugins that we’ll activate later through OMZ configuration file :
Fantastic search tool combined with fd
You’ll need to add the following lines at the end of .zshrc
2. Configuring Zsh
For advanced configuration, modify the
./zshrc config file.
- Plugins (list of plugins): OMZ comes with a large list of plugins waiting to be activated by entering their names in the plugins section, as follow. In this section, add the name of the additional plugins we installed manually, in bold:
- Theming (list of themes): enter the name of your favorite theme in the ZSH_THEME section:
Would you want to modify some theme colors, ZSH use Spectrum. Get a list of colors code withb spectrum_ls
Copy your aliases from the .bashrc file into .zshrc, as well as other commands you may have created.
Tip: Apply the changes without needing to logout and then back in by running source
Что такое ZSH и почему его следует попробовать в качестве альтернативы Bash?
ZSH, также называемая оболочкой Z, является расширенной версией Bourne Shell (sh) с множеством новых функций и поддержкой плагинов и тем. Поскольку она основана на той же оболочке, что и Bash, ZSH имеет многие из тех же функций, и переключиться на него очень просто.
Чем ZSH лучше Bash?
У ZSH слишком много функций, чтобы перечислять их здесь, часть из них — лишь незначительные улучшения в Bash, но вот некоторые из основных:
- Автоматический cd: просто введите имя каталога
- Рекурсивное расширение пути: например, «/u/lo/b» заменяется на «/usr/local/bin»
- Исправление орфографии и приблизительное завершение: если вы допустили незначительную ошибку при вводе имени каталога, ZSH исправит её за вас.
- Поддержка плагинов и тем: ZSH включает множество различных фреймворков плагинов.
Поддержка плагинов и тем, вероятно, самая крутая функция ZSH, и на этом мы сосредоточимся здесь.
Установка ZSH
macOS
перед установкой из Homebrew. Если он новее 4.3.9, возможно, всё будет в порядке. Желательно новее или равно 5.0.
Чтобы установить zsh в качестве оболочки по умолчанию, выполните следующие действия, предполагая, что по умолчанию установлена Homebrew.
Последние версии Mac OS:
Mac OS High Sierra и более ранние версии:
Предполагая, что у вас установлен Homebrew. В противном случае большинство версий macOS по умолчанию поставляют zsh, но обычно это более старая версия. В качестве альтернативы вы также можете использовать MacPorts
Ubuntu, Debian и производные (Windows 10 WSL | Собственное ядро Linux с Windows 10 build 1903, Kali Linux, Linux Mint, elementary OS, Zorin OS, Raspbian, MX Linux, Deepin)
OpenSUSE
Arch Linux or Manjaro
Void Linux
Fedora
OpenBSD
Для установки этого пакета:
Для установки этого пакета:
Для установки порта:
Чтобы уменьшить использование памяти, необязательно включите параметры zsh-mem с помощью
перед запуском "make install".
Centos/RHEL
Cygwin
Установите пакет zsh с помощью установщика. К сожалению, Cygwin не имеет стандартного интерфейса командной строки. Однако вы можете настроить apt-cyg и установить zsh следующим образом:
Самый простой способ изменить оболочку по умолчанию — установить переменную пользовательской среды SHELL. Найдите «Изменить переменные среды для вашей учётной записи» ("Edit Environment variables for your account"), чтобы открыть окно переменных среды, создайте новую переменную с именем «SHELL» и присвойте ей значение «/usr/bin/zsh/».
В качестве альтернативы: откройте Cygwin (в BASH), затем введите:
После открытия файла .bashrc добавьте эту строку в самый верх:
Закройте и сохраните файл. Закройте и снова откройте Cygwin. Он будет выполнять команду каждый раз, когда вы загружаете терминал и запускаете оболочку zsh.
Solus
Funtoo/Gentoo
Alpine Linux
MSYS2
Termux (Android)
Termux — эмулятор терминала для Android, но имеет современные функции, такие как в Debian и Ubuntu (Termux имеет оболочку Bash и программы, подобные GNU Busybox). Для менеджера пакетов Termux использует менеджер пакетов Debian/Ubuntu, APT. Чтобы установить пакет, выполните эту команду:
Команда выглядит как менеджер пакетов FreeBSD (pkg). Или вы можете запустить эту команду:
Чтобы установить zsh в качестве оболочки по умолчанию, выполните эту команду:
Установка Oh-My-Zsh
Oh-My-Zsh — это самый популярный фреймворк для ZSH, который также имеет множество встроенных плагинов и тем. Есть также пара других фреймворков для плагинов, в том числе Antigen, который является полным менеджером пакетов для ZSH, но Oh-My-Zsh имеет множество встроенных плагинов и хорошо выполняет свою работу.
У Oh-My-Zsh есть простой сценарий установки, который вы можете запустить:
Оттуда вы можете включать и отключать плагины, добавляя их в свой файл .zshrc, расположенный в вашем каталоге
Вы можете получить полный список плагинов в репозитории Oh-My-Zsh.
Существует множество тем, но некоторые считают, что powerlevel10k одна из лучших. Она добавляет выровненное по правому краю информационное окно, интеграцию с git и историей команд, невероятную настройку и оборачивает всё это в приятный интерфейс на основе плагина powerline для vim.
Вы захотите использовать iTerm на macOS или на любом терминале с 24-битным цветом, чтобы получить максимальную отдачу от powerlevel10k (или любой другой темы ZSH).
Чтобы настроить powerlevel10k (если вы установили Oh-My-Zsh), просто клонируйте репозиторий в папку пользовательских тем .oh-my-zsh:
Затем вам нужно включить его в .zshrc:
После загрузите .zshrc и вы должны увидеть внесённые изменения.
При желании вы можете настроить приглашение по умолчанию, указав POWERLEVEL9K_LEFT_PROMPT_ELEMENTS в вашем .zshrc. Вот мой с минимальным приглашением командной строки:
Zsh (Русский)
Zsh является мощной современной оболочкой, которая работает как в интерактивном режиме, так и в качестве интерпретатора языка сценариев. Он совместим с bash (не по умолчанию, только в режиме emulate sh ), но имеет преимущества, такие как улучшенное завершение и подстановка.
Еще больше причин, по которым стоит использовать Zsh, перечислено в Zsh FAQ EN.
Установка
Перед установкой вы можете посмотреть, какая оболочка используется в данный момент:
Установите пакет zsh . Чтобы значительно расширить возможности автодополнения команд, установите также пакет zsh-completions .
Первоначальная настройка
Убедитесь, что Zsh был установлен правильно, выполнив следующую команду в терминале:
После этого вы должны увидеть скрипт zsh-newuser-install, который проведет вас через некоторые основные настройки. Если вы хотите пропустить первичную настройку, нажмите q . Если скрипт не запустился, вы можете вызвать его вручную:
Установка Zsh в качестве оболочки по умолчанию
/.zshrc (например, приглашение командной строки и псевдонимы), а также из
Файлы Запуска/Завершения
- Если $ZDOTDIR не определена, используется $HOME по умолчанию.
- Если опция RCS не установлена ни в одном из файлов, файлы конфигурации не будут получены после этого файла.
- Если опция GLOBAL_RCS не задана ни в одном из файлов, после этого файла не будут найдены глобальные конфигурационные файлы ( /etc/zsh/* ).
При запуске Zsh по умолчанию он будет загружать следующие файлы в этом порядке:
/etc/zsh/zshenv Используется для установки общесистемных переменных environment variables (Русский); Он не должен содержать команд, которые производят вывод, или предполагает, что shell подключен к tty. Этот файл всегда будет источником, это нельзя переопределить. $ZDOTDIR/.zshenv Используется для установки переменных среды пользователя; Он не должен содержать команд, которые производят вывод, или предполагает, что shell подключен к tty. Этот файл всегда будет источником. /etc/zsh/zprofile Используется для выполнения команд при запуске, будет вызван при запуске как login shell. Обратите внимание, что в Arch Linux по умолчанию в нем содержится одна строка, в которой источником является /etc/profile . /etc/profile Этот файл должен быть загружен всеми Bourne-совместимыми оболочками при входе в систему: он устанавливает $PATH и другие переменные окружения и специфичные для приложения ( /etc/profile.d/*.sh ) при входе в систему. $ZDOTDIR/.zprofile Используется для выполнения пользовательских команд при запуске, будет вызван при запуске как login shell. /etc/zsh/zshrc Используется для настройки интерактивной конфигурации оболочки и выполнения команд, будет вызван при запуске как interactive shell. $ZDOTDIR/.zshrc Используется для настройки интерактивной конфигурации пользователя и выполнения команд, будет вызван при запуске как interactive shell. /etc/zsh/zlogin Используется для выполнения команд при завершении прогресса инициализации, будет вызван при запуске как login shell. $ZDOTDIR/.zlogin Используется для выполнения пользовательских команд при завершении начального прогресса, будет вызван при запуске как login shell. $ZDOTDIR/.zlogout Будет получен, когда login shell завершится. /etc/zsh/zlogout Будет получен, когда login shell завершится.
- Пути, используемые в пакете Arch zsh , отличаются от используемых по умолчанию в man pages (FS#48992).
- /etc/profile не является частью обычного списка запускаемых файлов Zsh, но поступает из /etc/zsh/zprofile в пакете zsh . Пользователи должны принять во внимание, что /etc/profile устанавливает переменную $PATH которая перезапишет любую переменную $PATH установленную в $ZDOTDIR/.zshenv . Чтобы это предотвратить, установите переменную $PATH в $ZDOTDIR/.zprofile .
Настройка Zsh
Хотя Zsh может использоваться “из коробки”, он настроен не так, как хотело бы большинство пользователей. Из-за наличия огромных возможностей настройки, доступных в Zsh, этот процесс может оказаться сложным и трудоемким.
Простой .zshrc
Ниже приведён пример файла настроек, который обеспечивает достойный набор опций по умолчанию, а также предоставляет примеры многих вариантов настройки Zsh. Для того, чтобы использовать этот пример, сохраните его в виде файла с именем .zshrc .
Вот простой .zshrc :
Настройка переменной $PATH
Информацию о настройке в zsh системных путей отдельно для каждого пользователя можно найти на странице проекта. Вкратце, добавьте в файл
/.zshenv следующие строки:
Смотрите также примечание в разделе #Фреймворки настроек.
Автозавершение команд
Возможно, наиболее убедительной стороной Zsh является его передовые возможности автозавершения. Включите автозавершение в .zshrc . Добавив следующую строку в ваш
Настройки выше включают в себя также ssh/scp/sftp завершения хостов, но для того, чтобы эта функция работала, пользователи должны предотвратить SSH от хеширования хостов имён в
/.ssh/known_hosts где-то еще, так что ssh создаст новый с un-hashed хостами (ранее известные хосты, таким образом, будут утеряны). Для получения более подробной информации смотрите тут кэшированные-хосты.
Для автозавершения с использованием клавиши-стрелки, добавьте следующие строки в:
Для активации меню нажмите TAB дважды.
Для автозавершения командной строки для алиасов (псевдонимов), добавьте следующее:
Позволяем разворачивать сокращенный ввод, к примеру cd /u/sh в /usr/share
Обработчик неизвестных команд
В утилиту pkgfile входит Zsh скрипт, содержащий функцию command_not_found_handler . При вводе неизвестной команды функция автоматически осуществляет поиск в официальных репозиториях.
Чтобы включить хук, нужно его прочитать. Например, добавьте с файл .zshrc следующую строку:
Игнорирование повторяющихся строк в истории
Чтобы игнорировать повторяющиеся строки в истории, используйте следующее:
Чтобы освободить историю от уже созданных дубликатов, запустите:
Команда ttyctl
[1] описывает ttyctl команды в Zsh. Это можно применить для «замораживания / размораживания» терминала. Многие программы изменяют состояние терминала, и часто не восстанавливают настройки терминала нормально при выходе. Чтобы избежать необходимости вручную сбрасывать терминал, используйте следующее:
Назначение клавиш
Zsh не использует Readline, вместо этого он использует свой собственный и более мощный ZLE. Т.е. не читает /etc/inputrc или
/.inputrc . Zle имеет emacs режим и vi режим. По умолчанию, он пытается взять клавиши emacs или vi из переменной среды $EDITOR . Если она пуста, то по умолчанию будет Emacs. Измните это bindkey -e или bindkey -v соответственно в режиме Emacs или режиме VI.
Назначение клавиш в оболочке
Настраиваем нормальное поведение клавиш (не как в vi и emacs). Для этого в
/.zshrc добавьте следующее:
Назначение клавиши в ncurses
Привяжите приложение ncurses к keystoke, но оно не будет принимать взаимодействие. Используйте переменную BUFFER , чтобы заставить его работать. Следующий пример позволяет пользователям открывать ncmpcpp, используя Alt+\ :
Альтернативный путь назначения клавиш в ncurses
Этот метод будет содержать всё, что вы ввели в строку перед вызовом приложения
Горячие клавиши в файловом менеджере
Могут пригодится настройки клавиш использующиеся в графическом файловом менеджере. Первая комбинация показывает историю каталогов (Alt + Left), вторая позволяет пользователю перейти в родительский каталог (Alt + Up). Они также отображают содержимое каталогов.
История поиска
Добавьте эти строки в .zshrc
Doing this, only past commands beginning with the current input would have been shown.
Настройка строки приглашения (PROMPT)
Существует быстрый и легкий способ создать цветное приглашение в Zsh. Убедитесь что prompt установлен в autoload в файле .zshrc . Это может быть сделано путем добавления этих строк:
Доступные цветовые схемы можно перечислить с помощью команды:
Для просмотра всех доступных тем (с примерами), используйте команду:
Например, чтобы использовать цветовую схему bigfade , введите:
Чтобы использовать цветовую схему с заданным цветом (если доступен в теме), введите:
Настройка командной строки (PROMPT)
В отличие от bash zsh имеет два промта — левый и правый. Правый промт исчезает при вводе длинных команд, что делает его очень удобным для отображения не самой полезной информации, типа времени или текущего каталога. Промты настраиваются с помощью переменных PROMPT (левый) и RPROMPT (правый):
export PROMPT=’%n@%m> ‘ export RPROMPT='[%
Некоторые из специальных последовательностей, которые можно в них использовать: Последовательность — Описание %n — Имя пользователя %m — Имя компьютера (до первой точки) %M — Полное имя компьютера %
— Путь к текущему каталогу относительно домашнего %d — Полный путь к текущей директории ($PWD) %T — Время в формате HH:MM %* — Время в формате HH:MM:SS %D — Дата в формате YY-MM-DD %B, %b — Начало и конец выделения жирным
Цвета
Zsh устанавливает цвета иначе, чем Bash. Добавьте autoload -U colors && colors до PROMPT= в .zshrc чтобы воспользоваться. Usually you will want to put these inside % < [. ] %>so the cursor does not move.
$fg[color] будет установлен цвет текста (значения, подставляемые вместо “color”, к примеру: red, green, blue, и т.д.. — по умолчанию установлены в любом формате до текста)
Команда | Описание |
---|---|
%F |
фактически то же самое, что и предыдущий, но с меньшим набором. Можно также вставить префикс с номером F. |
$fg_no_bold[color] | будет использоваться не толстый текст с заданным цветом. |
$fg_bold[color] | будет использоваться толстый текст с заданным цветом. |
$reset_color | сбросит цвет текста, на цвет по умолчанию. Не сбрасывает толщину текста. Используйте %b для отмены утолщения. Saves typing if it’s just %f though. |
%K |
устанавливает цвет фона. Того же цвета, как цвет без текста полужирным. Prefixing with any single-digit number makes the bg black. |
Возможные значения цвета | |
---|---|
black или 0 | red или 1 |
green или 2 | yellow или 3 |
blue или 4 | magenta или 5 |
cyan или 6 | white или 7 |
Цветной вывод команд
Раскрашивание вывода команд при помощи скрипта grc. Поставьте пакет grc И добавьте следующие строки в ваш
Пример
Это пример двустороннего промта:
А вот как оно будет отображаться:
Стек Каталогов
Zsh можно настроить, чтобы он помнил DIRSTACKSIZE (последние посещённые каталоги). Это пригодится для более быстрой работы с cd. Вам нужно добавить несколько строк, в файл настройки:
Для вывода стека директорий. Используйте cd -<NUM> чтобы вернуться к посещённому каталогу. Используйте автозавершение (нажав TAB ) после тире.
Команда Help
В отличие от bash, zsh не позволяет использовать встроенный в help команду для автодополнения. Чтобы использовать help в zsh, добавьте следующие строки в ваш zshrc :
Подсветка синтаксиса как в Fish
Fish обеспечивает очень мощную подсветку синтаксиса. Для использования в zsh, вы можете установить zsh-syntax-highlighting из официального репозитория и обязательно добавьте в ваш
Примеры файла .zshrc
- Пакет grml-zsh-config , доступный в официальном репозитории взятый с https://grml.org/zsh содержит zshrc файл, который включает в себя множество настроек для Zshell. Эта настройка используется по умолчанию для ежемесячного ISO релиза.
- Базовая настройка с динамической строкой приглашения (Prompt) и заголовком окна / Hardinfo => https://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc; — zshrc с несколькими функциями, — смотрите комментарии в файле. Известные особенности: подтверждение выключения, если пользователь запустил poweroff, а также запрос подтверждения на reboot или hibernate, поддержка GIT в Prompt (сделано без vcsinfo), завершение по TAB с меню, вывод текущей выполняемой команды в заголовке окна, и многое другое.
Фреймворки настроек
-
управляемый сообществом, популярный фреймворк для настройки вашего Zsh. Он поставляется в комплекте с тонной полезных функций, помощников, плагинов, тем. (доступен в prezto-gitAUR ) настроенный фреймворк Zsh. Он поставляется с модулями, разумно расширяющих среду интерфейса командной строки (по умолчанию), псевдонимами (алиасами), функциями, атодополнением, и темами Prompt. (дступен в antigen-gitAUR ) — менеджер плагинов для zsh, вдохновлённый oh-my-zsh и vundle.
Автозапуск приложений
Zsh всегда выполняет /etc/zsh/zshenv и $ZDOTDIR/.zshenv так что не раздувайте эти файлы.
При входе в оболочку, читаются команды из /etc/profile а потом $ZDOTDIR/.zprofile . Затем, если оболочка является интерактивной, команды читаются из /etc/zsh/zshrc а потом $ZDOTDIR/.zshrc . Наконец, если в оболочку выполнен вход, читаются /etc/zsh/zlogin и $ZDOTDIR/.zlogin .
Смотрите также секцию STARTUP/SHUTDOWN FILES в zsh(1) .
Постоянный rehash
Обычно compinit не находит новые исполняемые файлы в $PATH. Например после установки нового пакета, файлы в /usr/bin не сразу будут включены в автодополнение. Чтобы включить их в работу, выполните:
‘rehash’ может выполняться автоматически. Включите его в вашем zshrc :
Функции
Zsh позволяет пользователю определять собственные функции, которые могут выполняться точно также как и обычные программы. Функции выполняются в том же процессе, что и вызвавшая их программа. При вызове функции аргументы передаются как позиционные параметры.
Распаковка архива
Чтобы распаковать архив не указывая тип распаковщика и его аркументы, а выполнив всего лишь команду вида ex имя_архива.bz2 Добавьте следующий код в
Упаковка в архив
Упаковка в архив командой pk 7z /что/мы/пакуем имя_файла.7z — при этом архив будет в Домашней папке.
Удаление
Измените оболочку по умолчанию перед удалением пакета zsh .
Запустите следующую команду:
Где user — имя пользователя.
Используйте эту команду для каждого пользователя с установленной оболочкой zsh (в том числе и root при необходимости). После, удалите пакет zsh .
Кроме того, изменить оболочку по умолчанию обратно в Bash, можно редактируя /etc/passwd от root.
Например, изменить следующие:
Смотрите также
Рекомендуем обязательно обратится к следующим Русскоязычным статьям, для более полного и лучшего понимания.
Install the Awesome Zsh and Make it the Default Shell
This tutorial will give you a short introduction to Zsh, steps to install Zsh and make it a default shell whenever you login to terminal.
What is Zsh (Z Shell)?
Z Shell (zsh in short), is a shell just like bash. It is used as a login shell (where you get a greeting and you will type in username and password) and as a command line interpreter (where you type Linux commands such as ls, cd).
You might wonder why someone needs to switch if every shell does these two functions. One of the main reasons is that his/her’s relative experience with different shells. And another reason is that each shell has unique features such as auto-completion, frequently used commands listing, etc. Feel free to share your reason in the comments.
How to install Zsh
This tutorial is tested on Ubuntu 18.04 LTS. It should work with other versions of Ubuntu as well. If not, tell us in the comments.
You can install zsh with following commands in Debian/Ubuntu based distributions:
You need sudoer rights to run above commands. If you don’t have such rights, contact your system admin. If you are the administrator, then refer to this article to learn about creating a sudoer.
In Fedora, Red Hat and CentOS, you can use the DNF package manager to install Zsh:
To check whether you have installed zsh correctly or not, run zsh by zsh —version.
Once done with the installation, you need to do a little configuration setup (if you haven’t done it already). First, change the shell by typing zsh in the terminal to get a prompt like this.
zsh
If you want to explore the options choose 1 and set it up. But I would recommend choosing 2 for now and then change the configuration whenever you need it.
Note that when you are running zsh for the first time and you accidentally happened to have one of these files (.zshenv .zshrc, .zlogin), the above prompt will not appear at that situation. Delete the files if you want to avoid using older configurations and run zsh again.
Make zsh the default shell
You can make any shell as your default shell if you know the location(or symbolic link) of the shell. In our case, zsh has a symbolic link /bin/zsh.
Above command will set zsh as the default shell for seeni. after a getting a password to check whether user running this command is “seeni,”. If you are the doing for it another user and you are the root or you have sudoer permissions, prepend sudo to the above command as follows.
When you login the next time, check which shell you are using. If it’s zsh, this means that zsh is now the default shell on your system.
Congratulations! You manage to install zsh and make it the default shell. I hope you found this article useful. If you have suggestions or questions about this article, please let us know in the comments.