- Как сменить оболочку (shell) в Linux
- Как узнать оболочку какая оболочка по умолчанию?
- Как узнать, какая оболочку используется сейчас?
- Как просмотреть все оболочки, доступные в системе?
- Как сменить оболочку?
- Как навсегда изменить оболочку по умолчанию в Linux?
- Как в Linux изменить login shell (оболочку входа в систему). Инструкция по команде chsh
- Как узнать, какие оболочки установлены в системе
- Программа для смены оболочки пользователя — chsh
- Смена оболочки с помощью usermod
- How do you change the default shell for ALL USERS to bash?
- 3 Answers 3
Как сменить оболочку (shell) в Linux
Возможно, вы уже знаете, что в Linux и других Unix-подобных системах доступно несколько оболочек. Bash является оболочкой по умолчанию почти во всех дистрибутивах Linux, но есть и другие популярные оболочки, такие как:
Некоторые из оболочек предоставляют дополнительные функции для удобства пользователе. Возьмем, к примеру, оболочку Fish. Онf частично начинает показывать вам подсказки команд, основанные на вашей предыдущей набранной команде. Это очень удобно, если вы не хотите постоянно помнить ярлыки на терминале Linux.
Давайте посмотрим некоторые моменты оболочки системы Linux.
Как узнать оболочку какая оболочка по умолчанию?
Чтобы узнать, какая оболочка по умолчанию установлена в конкретной системе, проверим переменную среды SHELL. Обычно оболочкой по умолчанию является bash, и она отображается так:
Как узнать, какая оболочку используется сейчас?
Не существует единого метода, который бы сообщал вам, какая оболочка используется в данный момент со 100%-ой точностью. Но можно попробовать либо echo $0, который показывает вывод, подобный этому:
либо проверить процесс, используя ps -p $$ следующим образом:
$ ps -p $$ PID TTY TIME CMD 9625 pts/0 00:00:00 zsh
Как просмотреть все оболочки, доступные в системе?
Все оболочки, доступные в конкретной системе, перечислены в файле /etc/shells. Можно использовать команды cat или less для просмотра содержимого файла.
# /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), вы можете использовать:
Чтобы выйти из новой оболочки и вернуться к предыдущей достаточно выполнить команду exit .
Как навсегда изменить оболочку по умолчанию в Linux?
Предположим, нам очень понравилась оболочка Fish, и мы хотим использовать ее в качестве оболочки по умолчанию, вместо оболочки bash которая поставляется по умолчанию.
Linux позволяет изменить оболочку по умолчанию с помощью команды chsh . Лучший способ изменить оболочку по умолчанию для вошедшего в систему пользователя — сменить имя оболочки, указанное в файле /etc/shells, с помощью опции -s.
Для того, чтобы изменения вступили в силу необходимо выйти из системы, иначе создастся ощущение, что запуск chsh не изменил оболочку.
Необходимо указывать полный путь к файлу /etc/shells? Если использовать chsh -s fish , то получим ошибку типа chsh: fish не является допустимой оболочкой .
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:
CC Attribution-Noncommercial-Share Alike 4.0 International
Как в Linux изменить login shell (оболочку входа в систему). Инструкция по команде chsh
Вход в систему обрабатывается оболочкой и другими инструментами, например, сам login или ваш диспетчер рабочего стола (с помощью PAM и различных других инструментов).
Назначение оболочки входа не в том, чтобы обрабатывать вход в систему, а в том, чтобы вести себя соответствующим образом как первая оболочка в сеансе входа в систему: в основном это означает обработку файлов запуска, которые должны обрабатываться только один раз за сеанс входа, и защиту сеанса входа в систему от нежелательных взаимодействие с некоторыми функциями системы (в частности, приостановка работы).
Особенности оболочки входа, по крайней мере, реализованной в Bash, заключаются в следующем:
- оболочка входа в систему обрабатывает команды из /etc/profile, затем первый файл, который она находит среди ~/.bash_profile, ~/.bash_login и ~/.profile (если только это не интерактивная оболочка входа, запущенная без параметра —login);
- при выходе из оболочки входа выполняется logout вместо exit;
- выход из оболочки входа в систему прерывает все задания;
- оболочку входа нельзя приостановить;
- оболочка входа устанавливает переменную HOME (кроме POSIX-корректного режима);
- оболочка входа устанавливает параметр оболочки login_shell.
С практической точки зрения, выбранная оболочка входа в систему определяет оболочку, которая используется для пользователя по умолчанию. Хотя конечно, ничто не мешает запустить любую другую установленную в вашей системе оболочку.
Как узнать, какие оболочки установлены в системе
Чтобы изменить оболочку по умолчанию для пользователя, нужно знать, какие оболочки доступны и как они правильно называются.
Один из способов узнать правильные названия оболочек и пути до исполнимых файлов — это запустить следующую команду:
Но предыдущая команда срабатывает не на всех дистрибутивах (работает на Arch Linux, но не работает на производных Debian).
Поэтому можно воспользоваться универсальным методом — посмотреть содержимое файла /etc/shells:
В файле shells собраны пути к действующим оболочкам входа.
/etc/shells — это текстовый файл, который содержит полные пути к действующим оболочкам входа. Этот файл просматривается программой chsh и доступен для запроса другими программами.
Имейте в виду, что есть программы, которые обращаются к этому файлу, чтобы узнать, является ли пользователь обычным пользователем; например, демоны FTP традиционно запрещают доступ пользователям с оболочками, не включёнными в этот файл.
Программа для смены оболочки пользователя — chsh
chsh — измените оболочку входа пользователя на постоянной основе.
Если вы временно хотите изменить шелл, то установите его и запустите. Примеры команд запуска различных оболочек:
chsh используется для изменения оболочки входа в систему. Если оболочка не указана в командной строке, chsh запрашивает её.
chsh поддерживает нелокальные записи (kerberos, LDAP и т.д.), если они связаны с libuser, в противном случае используйте ypchsh, lchsh или любую другую реализацию для нелокальных записей.
В качестве ОБОЛОЧКИ нужно указать одну из оболочек, как они перечислены в файле /etc/shells.
chsh примет полный путь к любому исполняемому файлу в системе.
Поведение по умолчанию для пользователей без полномочий root — принимать только оболочки, перечисленные в файле /etc/shells, и выдавать предупреждение для пользователя root. Его также можно настроить во время компиляции, чтобы выдавать предупреждение только для всех пользователей.
Смена оболочки с помощью usermod
Утилита usermod с опцией -s меняет оболочку указанного пользователя.
Например, чтобы заблокировать пользователя root, используйте следующую команду:
sudo usermod -s /usr/sbin/nologin root
Чтобы назначить пользователю root оболочку Bash:
sudo usermod -s /usr/bin/bash root
Чтобы назначить пользователю root оболочку ZSH:
sudo usermod -s /usr/bin/zsh root
How do you change the default shell for ALL USERS to bash?
I want every new user from now on to have bash as their shell by default. I know that to change your own shell to bash, you would use the command «chsh -s /bin/bash», but how do I automatically set all future users’ shell to bash by default?
3 Answers 3
The adduser defaults file is /etc/adduser.conf . The default shell defined by the DSHELL variable is /bin/bash by default.
Most likely you don’t need this because useradd is a very low-level utility, and it’s hardly ever used directly.
If you use useradd, edit the /etc/default/useradd skeleton file (don’t forget to make a backup though).
Set the SHELL variable to /bin/bash instead of /bin/sh .
Now every time you use useradd to add a new user bash is automatically their default shell.
Already existing users
If you want to change the shell of already existing users you have to edit the /etc/passwd file (please make sure to back have a backup of it).
Here is a description of the columns
- login name
- optional encrypted password
- numerical user ID
- numerical group ID
- user name or comment field
- user home directory
- optional user command interpreter
In that order separated by colons (:) like this.
For more information about that file consult the man page man 5 passwd .