Jak przełączyć się z nieznanej powłoki na bash?


41

Byłem zaskoczony, że nie znalazłem tego pytania na stronie. Dzisiaj $pojawił się po zalogowaniu jako nowy użytkownik. Było to nieoczekiwane, ponieważ monit mojego głównego użytkownika zaczyna się od username@computername:~$.

Jak mogę przełączyć się z tej innej powłoki na bash?


8
To, że $wymyślił, username@computername:~$nie oznacza, że ​​to nie była walka. Dokładne formatowanie pytania jest ustawiane przez zmienną PS1, którą można skonfigurować lub dostosować w różny sposób dla różnych użytkowników.
— frabjous

3
@mouche Re: @frabjous, echo $SHELLaby dowiedzieć się, jaka jest twoja obecna powłoka.
— ksenoterrakid

1
@mouche @frabjous i zaczynając od $ jest tak naprawdę wspólne dla bash, niektóre powłoki inne niż bash, takie jak zsh, używają% po wyjęciu z pudełka, myślę, że inne powłoki używają innych rzeczy.
— ksenoterrakid

1
@mouche /bin/shczęsto nie znaczy wiele, co zwykle jest dowiązaniem symbolicznym do czegoś innego. Piszę, ls -l /bin/shżeby zobaczyć, do czego to dowiązanie symboliczne. W niektórych przypadkach bycie dowiązaniem symbolicznym do czegoś zmienia jego zachowanie, nie sądzę, że bash jest w ten sposób.
— ksenoterrakid

3
@xenoterracide - Używanie bashjako /bin/sh wyłącza wiele funkcji bash (przechodzi w tryb zgodności z POSIX).
— Chris Down,

Odpowiedzi:


61

Zakładając, że nieznana powłoka obsługuje uruchamianie bezwzględnych poleceń, możesz spróbować: /bin/bash

Aby zmienić domyślną powłokę, użyłbym chsh(1). Przykładowe użycie:chsh -s /bin/bash $USER


1
Czy chsh trwale zmienia powłokę, czy tylko dla bieżącej sesji?
— mouche

10
@mouche Permanently; zmienia twój wpis w/etc/passwd
— Michael Mrozek

@mouche, chsh(1)pozwoli na zmianę tylko na powłokę wymienioną w /etc/shells(i prawdopodobnie jest dostępna). chsh -lwymienia alternatywy. Uważaj, niektóre (podobne nologin) są zdefiniowane dla kont, których nigdy nie należy używać do logowania (dobry sposób na zablokowanie się), mogą istnieć lokalne dodatki do specjalnych zastosowań.
— vonbrand

19

Wpisać bash. Jeśli chcesz, aby była to trwała zmiana domyślnej powłoki /bin/bash, edytując /etc/passwd.

Oto kilka fragmentów z mojego /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

Ostatnie pole zawiera powłokę. Modyfikacja pola po ostatniej :do poprawnej lub niepoprawnej powłoki będzie działać. /bin/falsei /sbin/nologinoba oznaczają, że użytkownik nie ma prawdziwej powłoki logowania, chociaż jeśli pam nie jest poprawnie skonfigurowana, nie oznacza to, że nie może się zalogować (zgłosiłem błąd w Arch Linux, ponieważ możesz zalogować się graficznie bez konieczności powłoka logowania). /bin/bashi /bin/zshoba są poprawnymi powłokami, zobacz /etc/shellslistę prawidłowych powłok w swoich systemach. Oto moje, /etc/shellsjeśli jesteś zainteresowany.

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

Tak, możesz używać chshlub usermodrobić te same rzeczy, pamiętaj, że to tylko uporządkowane pliki tekstowe i TIMTOWTDI.


11
Prawdopodobnie chcesz użyć chshzamiast ręcznej edycjipasswd
— Michael Mrozek

@Michael istnieje około 5 (POOMA) różnych sposobów na zmianę powłoki. /etc/passwdNie miałem ochoty wymieniać żadnego z nich, ponieważ zawsze robię to ręcznie. chsh i usermod mogą to zrobić.
— ksenoterrakid

Bałagan z plikami konfiguracyjnymi to zły pomysł, błąd może uniemożliwić korzystanie z systemu. Tak, często jest to jedyny / najszybszy sposób, ale zrób to z najwyższą ostrożnością .
— vonbrand

12

Jeśli chsh lub ręczna edycja konfiguracji nie działa, ale podczas logowania wykonywany jest skrypt ~ / .profile, dodaj ten wiersz:

exec /bin/bash --login

Po chwili rozejrzenia się, to było rozwiązanie, którego potrzebowałem. Dzięki!
— PearsonArtPhoto

Świetny pomysł, zwłaszcza jeśli powłoka wybrała źródła, które
— zapisują

touch ~/.bash_profilew przeciwnym razie bash wykona się w pętli: bash bierze ~/.profilena wypadek, gdyby ~/.bash_profilenie istniał.
— har-wradim
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.