Как мне переключиться с неизвестной оболочки на 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.


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.