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 -l
zawiera 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ć
chsh
zamiast ręcznej edycjipasswd
- @Michael istnieje około 5 (POOMA) różnych sposobów zmiany powłoki w
/etc/passwd
Nie ' 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_profile
lub w innym przypadku bash wykona się w pętli: bash pobiera~/.profile
w przypadku, gdy~/.bash_profile
nie ' 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 $SHELL
aby dowiedzieć się, jaka jest twoja aktualna powłoka./bin/sh
czę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.bash
as/bin/sh
wyłącza wiele funkcji basha (przechodzi w tryb zgodności z POSIX).