Byłem zaskoczony, że nie znalazłem tego pytania jeszcze w witrynie. Dlatego dzisiaj $ po zalogowaniu się jako nowy użytkownik. Było to nieoczekiwane, ponieważ znak zachęty mojego głównego użytkownika zaczyna się od username@computername:~$.
Jak więc mogę się z tego przełączyć inna powłoka do basha?
Komentarze
Odpowiedź
Zakładając, że nieznana powłoka obsługuje uruchamianie polecenia bezwzględnego, 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
Komentarze
- Czy chsh na stałe zmienia powłokę, czy tylko dla bieżącej sesji ?
- @mouche Na stałe; zmienia twój wpis w
/etc/passwd - @mouche,
chsh(1)zezwala tylko na zmianę na wyświetloną powłokę w/etc/shells(i prawdopodobnie jest dostępny).chsh -lzawiera listę alternatyw. Uważaj, niektóre (jaknologin) są zdefiniowane dla kont, które nigdy nie powinny być używane do logowania (dobry sposób na zablokowanie sobie dostępu), mogą istnieć lokalne dodatki do specjalnych zastosowań.
Odpowiedź
Wpisujesz bash. Jeśli chcesz, aby było to trwałe, zmień domyślną powłokę na /bin/bash, edytując /etc/passwd.
Tutaj „s 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 ostatnim : do prawidłowej lub nieprawidłowej powłoki zadziała. /bin/false i /sbin/nologin oznaczają użytkownika nie ma prawdziwej powłoki logowania, chociaż jeśli pam nie jest poprawnie skonfigurowane, nie oznacza to, że nie mogą się zalogować (zgłosiłem błąd w Arch Linux, ponieważ możesz logować się graficznie bez powłoki logowania). /bin/bash i /bin/zsh to poprawne pociski, zobacz /etc/shells, aby uzyskać listę prawidłowych pocisków na Twoje systemy. Oto „moje /etc/shells, jeśli jesteś zainteresowany.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Tak, możesz użyć chsh lub usermod, aby zrobić to samo, pamiętaj, że są to tylko ustrukturyzowane pliki tekstowe i TIMTOWTDI.
Komentarze
- Prawdopodobnie chcesz użyć
chshzamiast ręcznej edycjipasswd - @Michael istnieje około 5 (POOMA) różnych sposobów zmiany powłoki w
/etc/passwdNie ' nie mam ochoty wymienić żadnego z nich , bo zawsze robię to ręcznie. chsh i usermod mogą to zrobić. - Majstrowanie przy plikach konfiguracyjnych to zły pomysł (TM), błąd może spowodować, że system stanie się bezużyteczny. Tak, często jest to jedyny / najszybszy sposób, ale zrób to z najwyższą ostrożnością .
Odpowiedź
Jeśli chsh lub ręczna edycja konfiguracji nie zadziała, ale przy logowaniu wykonywany jest skrypt ~ / .profile, dodaj tę linię:
exec /bin/bash --login
Komentarze
- Po chwili rozejrzenia się znalazłem rozwiązanie, którego potrzebowałem. Dzięki!
- Świetny pomysł, szczególnie jeśli powłoka wybrała ten plik podczas uruchamiania …
-
touch ~/.bash_profilelub w innym przypadku bash wykona się w pętli: bash pobiera~/.profilew przypadku, gdy~/.bash_profilenie ' nie istnieje.
$, a nieusername@computername:~$nie ' nie oznacza, że nie był ' t bash. Dokładne formatowanie monitu jest ustawiane przez zmienną PS1, którą można skonfigurować lub dostosować w różny sposób dla różnych użytkowników.echo $SHELLaby dowiedzieć się, jaka jest twoja aktualna powłoka./bin/shczęsto nie ' nie znaczy dużo, że ' jest zwykle dowiązaniem symbolicznym do czegoś innego. ' d wpiszls -l /bin/sh, aby zobaczyć, do czego ' jest dowiązanie symboliczne. W niektórych przypadkach link symboliczny do czegoś zmienia jego zachowanie, nie ' nie sądzę, że bash jest taki.bashas/bin/shwyłącza wiele funkcji basha (przechodzi w tryb zgodności z POSIX).