Як перейти з невідомої оболонки на bash?


41

Я був здивований, що не знайшов цього питання вже на сайті. Отже, сьогодні $з’явилося після того, як я ввійшов як новий користувач. Це було несподівано, оскільки починається запит мого основного користувача username@computername:~$.

Отже, як я перейду з цієї іншої оболонки на баш?


8
Тільки тому, що $придумали, а username@computername:~$не означає, що це не баш. Точне форматування підказки встановлюється змінною PS1, яку можна налаштувати або налаштувати по-різному для різних користувачів.
frabjous

3
@mouche Re: @frabjous, echo $SHELLщоб дізнатися, що таке ваша поточна оболонка.
ксенотеррацид

1
@mouche @frabjous і початок з $ насправді є загальним для bash, деякі не-башти, як zsh, використовують% з коробки, я вважаю, що інші оболонки використовують інші речі.
ксенотеррацид

1
Бути @mouche /bin/shчасто не означає багато, що зазвичай є посиланням на щось інше. Я хотів ls -l /bin/shби побачити, що це символьне посилання. У деяких випадках, будучи символьним посиланням на щось, змінюється його поведінка, я не думаю, що баш так.
ксенотерацид

3
@xenoterracide - Використання bashяк /bin/sh відключає багато функцій bash (він переходить у режим відповідності POSIX).
Кріс Даун

Відповіді:


61

Припустимо, що невідома оболонка підтримує абсолютну команду, ви можете спробувати: /bin/bash

Щоб змінити оболонку за замовчуванням, я б використав chsh(1). Використання зразка:chsh -s /bin/bash $USER


1
Чи chsh назавжди змінить оболонку або просто для поточного сеансу?
mouche

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обидва означають, що у користувача немає реальної оболонки для входу, хоча якщо пам’ять не налаштована правильно, це не означає, що вони не можуть увійти (я повідомив про помилку в цьому в 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
Майкл Мрозек

@Michael існує близько 5 (POOMA) різних способів зміни оболонки. /etc/passwdЯ не відчував, як перелічувати будь-який з них, тому що я завжди роблю це вручну. chsh та usermod можуть це зробити як.
ксенотеррацид

Заплутатися з файлами конфігурації - це погана ідея (TM), помилка може зробити систему непридатною. Так, це часто єдиний / найшвидший спосіб, але тоді робіть це з особливою обережністю .
vonbrand

12

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

exec /bin/bash --login

Дещо озирнувшись, це було потрібне мені рішення. Дякую!
PearsonArtPhoto

Відмінна ідея, особливо якщо оболонка вибрала джерела, які
зберігаються

touch ~/.bash_profileінакше bash виконає себе в циклі: bash бере ~/.profileна випадок, якщо ~/.bash_profileйого немає.
har-wradim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.