Як перейти з невідомої оболонки на 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.