Как сменить оболочку (shell) в Linux

Возможно, вы уже знаете, что в Linux и других Unix-подобных системах доступно несколько оболочек. Bash является оболочкой по умолчанию почти во всех дистрибутивах Linux, но есть и другие популярные оболочки, такие как:

  • ksh
  • zsh
  • fish
  • csh
  • dash

Некоторые из оболочек предоставляют дополнительные функции для удобства пользователе. Возьмем, к примеру, оболочку Fish. Онf частично начинает показывать вам подсказки команд, основанные на вашей предыдущей набранной команде. Это очень удобно, если вы не хотите постоянно помнить ярлыки на терминале Linux.

Давайте посмотрим некоторые моменты оболочки системы Linux.

Чтобы узнать, какая оболочка по умолчанию установлена в конкретной системе, проверим переменную среды SHELL. Обычно оболочкой по умолчанию является bash, и она отображается так:

$ echo $SHELL
/bin/bash

Не существует единого метода, который бы сообщал вам, какая оболочка используется в данный момент со 100%-ой точностью. Но можно попробовать либо echo $0, который показывает вывод, подобный этому:

$ echo $0
zsh

либо проверить процесс, используя ps -p $$ следующим образом:

$ ps -p $$

  PID TTY          TIME CMD

 9625 pts/0    00:00:00 zsh

Все оболочки, доступные в конкретной системе, перечислены в файле /etc/shells. Можно использовать команды cat или less для просмотра содержимого файла.

$ less /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/fish
/bin/zsh
/usr/bin/zsh

Если вы хотите использовать другую оболочку, вы можете просто ввести ее имя и войти в новую оболочку. Например, если вы хотите использовать Z Shell (zsh), вы можете использовать:

$ zsh

Чтобы выйти из новой оболочки и вернуться к предыдущей достаточно выполнить команду exit.

Предположим, нам очень понравилась оболочка Fish, и мы хотим использовать ее в качестве оболочки по умолчанию, вместо оболочки bash которая поставляется по умолчанию.

Linux позволяет изменить оболочку по умолчанию с помощью команды chsh. Лучший способ изменить оболочку по умолчанию для вошедшего в систему пользователя - сменить имя оболочки, указанное в файле /etc/shells, с помощью опции -s.

# chsh -s /usr/bin/fish

Для того, чтобы изменения вступили в силу необходимо выйти из системы, иначе создастся ощущение, что запуск chsh не изменил оболочку.

Необходимо указывать полный путь к файлу /etc/shells? Если использовать chsh -s fish, то получим ошибку типа chsh: fish не является допустимой оболочкой.