Изменение оболочки по умолчанию в Linux [закрыто]

318

Как можно изменить оболочку по умолчанию? В envнастоящее время команда говорит:

SHELL=/bin/tcsh

и я хочу изменить это на Bash.

Mahmood
источник
4
Это хороший вопрос, но он может быть более подходящим для сайта Linux QA.
BradleyDotNET
6
установите его в / etc / passwd
resultsway

Ответы:

415

Попробуйте команду Linux chsh .

Подробная команда есть chsh -s /bin/bash. Вам будет предложено ввести пароль. Ваша оболочка для входа по умолчанию /bin/bashтеперь. Вы должны выйти и снова войти, чтобы увидеть это изменение.

Следующее цитируется со страницы руководства:

Команда chsh изменяет оболочку входа пользователя. Это определяет имя начальной команды входа пользователя. Обычный пользователь может изменить оболочку входа только для своей учетной записи, суперпользователь может изменить оболочку входа для любой учетной записи.

Эта команда навсегда изменит оболочку входа в систему по умолчанию.

Примечание. Если ваша учетная запись удалена, например при аутентификации Kerberos (например, Enterprise RHEL), вы не сможете ее использовать chsh.

Summer_More_More_Tea
источник
10
chsh: can only change local entries; use ypchsh instead, Тогда у ypchsh нет -sвыбора
mahmood
10
@ShaktiMalik Я считаю, что файл конфигурации есть /etc/passwd, но я не проверял его дважды.
Summer_More_More_Tea
30
Вы должны выйти и снова войти, чтобы увидеть это изменение.
Нил Трафт
22
В моем случае у меня был root-доступ, но я не хотел связываться с какими-либо конфигурациями на реальном хосте. Я добавил exec /bin/bashк , ~/.profileи это позволило мне войти в систему непосредственно Баш без внесения каких - либо изменений на сервере. (Оригинальная оболочка по умолчанию была просто /bin/sh)
Пол Нельсон Бейкер
2
@BCqrstoO Спасибо за это. Но что, если вы exitвведете bash? Вы выйдете с сервера напрямую или просто выйдете из bash и войдите в sh, а другой - exitдля выхода с сервера?
Summer_More_More_Tea
148

Вы можете изменить файл passwd напрямую для конкретного пользователя или использовать команду ниже

chsh -s /usr/local/bin/bash username

Затем выйдите и войдите

Лед пустыни
источник
8
Вероятно, это хорошая идея, which bashпрежде чем использовать приведенную выше команду; Ваш пробег может варьироваться в зависимости от местоположения. В моем случае это было найдено в/bin/bash
Martin Haeberli
Я также могу добавить, что chshкоманда является частью util-linuxпакета; и chsh -s $(which bash) $USERдолжно получиться так же, как указано выше.
Также есть -lопция: «распечатать список оболочек».
Бетлиста
3
это было chsh -s /bin/bash usernameдля меня
Salvatorelab
Спасибо! Это помогло мне, когда я пытался изменить его для другого пользователя
Тобиас Фейл
18

Вы должны иметь «скелет» где-то в /etc, вероятно /etc/skeleton, или проверить настройки по умолчанию, вероятно,/etc/default или что-то. Это скрипты, которые определяют стандартные переменные среды, которые устанавливаются при входе в систему.

Если это только для вашей учетной записи: проверьте (скрытый) файл ~/.profileи ~/.login. Или генерировать их, если они не существуют. Они также оцениваются процессом входа в систему.

arkascha
источник
5
Плюс 1 за конкретный ответ на вопрос (Оболочка по умолчанию). На Red Hat Linux это указано в/etc/default/useradd
geedoubleya
@geedoubleya Можете ли вы указать, в чем разница по умолчанию и логин оболочки?
Бетлиста,
1
Привет @Betlista Оболочка по умолчанию - это оболочка, которая используется для оболочки входа для новых пользователей при их создании, если в качестве аргумента не указана конкретная оболочка.
geedoubleya