- Установка ZSH в качестве основной оболочки для терминала Linux
- Что такое командная оболочка (шелл, shell или sh)?
- Оригинальный шелл Борна и его разновидности BASH и ZSH
- Установка ZSH
- Как определить и изменить командную оболочку (shell) в Linux
- Оболочки Linux
- Как определить текущую командую оболочку
- Способ 1
- Способ 2
- Способ 3
- Как посмотреть список оболочек, доступных в системе
- Как временно переключиться на другую оболочку
- Как изменить оболочку
- Заключение
Установка ZSH в качестве основной оболочки для терминала Linux
Понял, что на канале практически не раскрыта тема оболочек терминала. Помнится, что лишь единожды в одной заметке коснулся темы оболочек, но как-то вскользь. К тому же один из подписчиков попросил рассказать про установку одной из оболочек. Это значит, что пора выпускать заметку и нечего тянуть. Сегодня поговорим про то, что такое оболочка и какие они бывают.
Что такое командная оболочка (шелл, shell или sh)?
Если я напишу, что это командный интерпретатор, то вряд ли станет понятнее. Потому попытаюсь объяснить своими словами в надежде, что общая суть окажется верной.
Представим себя, пользователя. Перед нами некий дистрибутив Linux, с которым мы можем взаимодействовать разными способами — при помощи графического интерфейса и при помощи терминала. То есть терминал можно представить как телефон, который использует пользователь для того, чтобы передать некую информацию системе. Но мы с системой разговариваем на разных языках и нужен способ перевести то, что мы от нее желаем в понятный ей формат. Эти и занимается командная оболочка — она интерпретирует (то есть, понимает) что ей сообщает пользователь при вводе определенных команд и передает эти команды системы в понятной ей форме.
Оригинальный шелл Борна и его разновидности BASH и ZSH
Командных оболочек для Unix-систем множество. Одной из первых появилась оболочка, созданная Стивеном Борном, которая и получила его имя. После начали появляться аналоги, основанные на шелле Борна, различающиеся своим функционалом. Оболочка BASH является стандартной для дистрибутивом Linux. Именно она предстает перед пользователем при запуске терминала после установки дистрибутива или при подключении к серверу по SSH.
Оболочка про которую мы будем говорить сегодня называется ZSH (Z Shell), которая заменяет BASH и расширяет возможности командной оболочки. Что есть в ZSH и чего нет в BASH?
- удобное автодополнение вводимых команд (удобнее чем в BASH, имею в виду)
- изменяемые горячие клавиши
- использование в качестве алиасов не только команд, но и например расширений файлов, что превращает ZSH в терминальный файловый менеджер
- существование плагина для подсветки синтаксиса
- возможность быстрой распаковки/запаковки файлов в архив
- поддержка большого количества тем и плагинов
Установка ZSH
Для установки воспользуемся системным пакетным менеджером. Помним, что команда для установки зависит от используемой пакетной базы.
Как определить и изменить командную оболочку (shell) в Linux
Командная оболочка или командный интерпретатор в Linux — это программа, которая в текстовой среде выступает в качестве интерфейса между пользователем и операционной системой. Она интерпретирует вводимые команды с терминала и вызывает необходимые программы.
Когда вы работаете в терминале, именно командная оболочка обрабатывает вводимые вами команды. Более того, оболочки Linux поддерживают написание программ на языке оболочки.
Оболочки Linux
Одна из самых популярных командных оболочек — это оболочка Bash (Bourne Again Shell). Она используется по умолчанию в большинстве дистрибутивов Linux.
Существуют разные оболочки Linux. Можно отметить:
Оболочки могут очень сильно отличаться друг от друга. Они отличаются функциональностью, синтаксисом команд, строкой приветствия, дружелюбностью к пользователю и другими параметрами и возможностями.
Как определить текущую командую оболочку
Есть несколько способов определить оболочку, используемую по умолчанию в вашей системе Linux. Рассмотрим несколько из них, так как в разных системах (и оболочках) какие-то способы могут не сработать.
Также нужно знать, что у разных пользователей системы могут использоваться разные оболочки.
Способ 1
Переменная окружения SHELL хранит путь до исполняемого файла оболочки. Выполним команду:
Из вывода команды, мы видим, что используется оболочка bash.
Способ 2
Также можно воспользоваться командой echo $0 . Данная команда выведет на экран имя текущего работающего процесса, внутри которого она выполнена. Так как мы выполняем команду внутри оболочки, то будет выведено имя оболочки.
Способ 3
Определим, работающий процесс оболочки командой ps.
ps -p $$ PID TTY TIME CMD 10792 pts/3 00:00:00 bash
Как посмотреть список оболочек, доступных в системе
Список оболочек, которые в данный момент установлены и доступны в системе Linux, хранится в файле /etc/shells
Выведем содержимое файла /etc/shells , для этого выполняем команду:
cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/bash /bin/rbash /bin/dash
Как временно переключиться на другую оболочку
Чтобы временно переключиться на другую оболочку, достаточно выполнить в терминале команду, соответствующую ее имени. После этого вы переключитесь на новую оболочку.
Например, переключимся на оболочку sh. Выполняем команду:
Как изменить оболочку
Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).
Чтобы изменить оболочку текущего пользователя нужно выполнить команду:
В качестве параметра путь_новой_оболочки необходимо указать путь до исполняемого файла оболочки, который вы можете найти в файле /etc/shells (см. выше).
Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):
После этого нужно выйти и снова войти в систему.
Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:
Заключение
Мы рассмотрели, как определить текущую оболочку Linux, как просмотреть список доступных оболочек, а также как изменить оболочку, используемую по умолчанию.
Чтобы получить информацию о какой-либо оболочке (доступной в системе) можно воспользоваться Man-страницами. Например:
Дополнительные оболочки можно устанавливать средствами системы (из репозиториев). Например, для установки оболочки fish в Ubuntu Linux, выполните команду