Как мне переключиться с неизвестной оболочки на bash?

41

Я был удивлен, что я не нашел этот вопрос уже на сайте. Итак, сегодня $подошел после того, как я вошел как новый пользователь. Это было неожиданно, потому что подсказка моего основного пользователя начинается с username@computername:~$.

Итак, как мне перейти с этой другой оболочки на bash?

Муш
источник
8
Просто потому, что $подошел, а username@computername:~$не означает, что это не был удар. Точное форматирование приглашения задается переменной PS1, которую можно настроить или настроить по-разному для разных пользователей.
безумно
3
@mouche Re: @frabjous, echo $SHELLчтобы узнать, какая у вас текущая оболочка.
ксенотеррацид
1
@mouche @frabjous и начало с $ на самом деле распространено для bash, некоторые не-bash-оболочки, такие как zsh, используют% из коробки, я полагаю, что другие оболочки используют другие вещи.
ксенотеррацид
1
@mouche /bin/shчасто означает не много, это обычно символическая ссылка на что-то еще. Я бы напечатал, ls -l /bin/shчтобы увидеть, что это символическая ссылка. В некоторых случаях, когда символическая ссылка на что-то меняет свое поведение, я не думаю, что bash таков.
ксенотеррацид
3
@xenoterracide - использование bashas /bin/sh отключает многие функции bash (он переходит в режим соответствия POSIX).
Крис Даун

Ответы:

61

Предполагая, что неизвестная оболочка поддерживает выполнение абсолютной команды, вы можете попробовать: /bin/bash

Чтобы изменить оболочку по умолчанию, я бы использовал chsh(1). Пример использования:chsh -s /bin/bash $USER

Кевин М
источник
1
Chsh навсегда меняет оболочку или только для текущей сессии?
Муш
10
@mouche постоянно; это меняет вашу запись в/etc/passwd
Майкл Мрозек
@mouche, chsh(1)позволит только перейти на оболочку, которая указана в /etc/shells(и доступна, предположительно). chsh -lперечисляет альтернативы. Будьте осторожны, некоторые (например nologin) определены для учетных записей, которые никогда не должны использоваться для входа (хороший способ заблокировать себя), могут быть локальные дополнения для специального использования.
vonbrand
19

Вы вводите bash. Если вы хотите, чтобы это было постоянным, измените оболочку по умолчанию на /bin/bashредактирование /etc/passwd.

Вот некоторые фрагменты из моего /etc/passwd:

avahi:x:84:84:Avahi daemon:/:/bin/false
xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh
postgres:x:88:88::/var/lib/postgres:/bin/zsh
bob:x:1001:1001::/home/bob:/bin/bash
usbmux:x:140:140:usbmux user:/:/sbin/nologin

Самое последнее поле содержит :оболочку. Будет работать модификация поля после последней действительной или недействительной оболочки. /bin/falseи /sbin/nologinоба означают, что у пользователя нет настоящей оболочки для входа, хотя, если pam настроен неправильно, это не значит, что он не может войти (я сообщил об ошибке в Arch Linux, потому что вы можете войти графически, не имея оболочка входа в систему). /bin/bashи /bin/zshоба являются действительными оболочками, см. /etc/shellsсписок допустимых оболочек в ваших системах. Вот мой, /etc/shellsесли вам интересно.

/bin/sh
/bin/bash
/bin/ksh
/bin/zsh
/bin/dash

Да, вы можете использовать chshили usermodделать то же самое, пожалуйста, помните, что это просто структурированные текстовые файлы и TIMTOWTDI.

xenoterracide
источник
11
Вы, вероятно, хотите использовать chshвместо ручного редактированияpasswd
Майкл Мрозек
@ Майкл, есть около 5 (POOMA) разных способов изменить оболочку, /etc/passwdя не чувствовал, что перечисляю их, потому что я всегда делаю это вручную. chsh и usermod могут сделать это.
ксенотеррацид
Плохая идея с конфигурационными файлами - плохая идея, ошибка может сделать систему непригодной для использования. Да, это часто единственный / самый быстрый способ, но тогда делайте это с особой осторожностью .
vonbrand
12

Если chsh или редактирование конфигурации вручную не сработает, но при входе в систему выполняется скрипт ~ / .profile, добавьте следующую строку:

exec /bin/bash --login
Кевин Канту
источник
Посмотрев некоторое время, это было решение, которое мне было нужно. Благодарность!
PearsonArtPhoto
Отличная идея, особенно если оболочка выбрала источники, которые файл при запуске ...
vonbrand
touch ~/.bash_profileили иначе bash будет исполнять себя в цикле: bash принимает ~/.profileв случае, если ~/.bash_profileне существует.
har-wradim