Команда chsh (change shell) в Linux – это утилита, позволяющая пользователям изменять стандартную оболочку входа в систему. Оболочка входа – это интерфейс командной строки, с которым взаимодействуют пользователи при входе в Unix-подобную систему. К распространенным оболочкам относятся dash, bash, zsh, ksh и fish.
Прежде чем перейти к команде chsh, необходимо понять, что такое оболочка входа в систему. Оболочка входа – это первый процесс, который запускается под вашим идентификатором пользователя, когда вы входите в систему. Он отвечает за инициализацию вашего окружения и предоставляет интерфейс для взаимодействия с системой.
Распространенные оболочки Linux
- Bash (Bourne Again Shell): Оболочка по умолчанию для многих дистрибутивов Linux, известная своей простотой в использовании и широкими возможностями.
- Zsh (Z Shell): Расширенная версия bash с множеством дополнительных возможностей, таких как улучшенное завершение вкладок и настройка.
- Ksh (Korn Shell): Оболочка, которая предлагает функции сценариев, найденные в sh и csh.
- Fish (Friendly Interactive Shell): Известна своими удобными функциями, такими как подсветка синтаксиса и автосоветы.
- Dash: Оболочка Linux Dash (dash) – это легковесная, POSIX-совместимая оболочка, разработанная для скорости и минимального использования ресурсов, часто используемая в качестве оболочки сценариев по умолчанию в системах на базе Debian.
Команда chsh в Linux
Как объясняется во введении выше, команда chsh позволяет изменить оболочку входа в систему. Ниже приведен ее синтаксис:
chsh [options] [LOGIN]
А вот что говорит о ней man-страница этого инструмента:
The chsh command changes the user login shell. This determines the name of the user's initial login command. A normal user may only change the login shell for her own account; the superuser may change the login shell for any account.
Ниже приведено несколько примеров в стиле Q&A, которые должны дать вам представление о том, как работает команда chsh.
Q1. Как использовать команду chsh?
Базовое использование довольно простое – просто выполните команду ‘chsh’ без аргументов. Вас попросят ввести пароль для входа в систему, и после успешного ввода у вас появится возможность изменить оболочку для входа в систему.
chsh
Обратите внимание, что оболочка входа для текущего пользователя изменяется по умолчанию.
Q2. Как изменить оболочку входа в систему с помощью chsh?
Как и следовало ожидать, просто введите новое значение (см. скриншот в предыдущем примере), и ваша оболочка будет изменена на новую.
Например, я ввел /bin/sh в качестве нового значения.
Чтобы проверить изменения, можно снова запустить команду chsh. Значение, указанное в квадратных скобках, – это текущая оболочка. В моем случае текущей оболочкой стала /bin/sh:
Q3. Как изменить оболочку входа для другого пользователя?
Для этого просто укажите имя пользователя в качестве входного параметра команды chsh.
chsh [username]
Например, чтобы изменить оболочку входа в систему для root, используйте команду chsh следующим образом:
chsh root
Q4. Как заставить chsh работать в неинтерактивном режиме?
Для этого используйте параметр командной строки -s, который требует передачи имени оболочки на вход.
Например:
chsh -s /bin/sh
Таким образом, оболочка входа для текущего пользователя будет изменена на /bin/sh неинтерактивным способом.
Q5. Как просмотреть список доступных оболочек входа в систему?
Чтобы быстро просмотреть список оболочек, доступных в вашей системе, просто откройте файл /etc/shells.
Например, вот вывод, полученный в моей системе:
# /etc/shells: valid login shells /bin/sh /bin/bash /bin/rbash /bin/dash
Примечание:
The only restriction placed on the login shell is that the command name must be listed in /etc/shells, unless the invoker is the superuser, and then any value may be added. An account with a restricted login shell may not change her login shell. For this reason, placing /bin/rsh in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value.