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?
$
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.echo $SHELL
aby dowiedzieć się, jaka jest twoja obecna powłoka./bin/sh
czę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.bash
jako/bin/sh
wyłącza wiele funkcji bash (przechodzi w tryb zgodności z POSIX).Odpowiedzi:
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
źródło
/etc/passwd
chsh(1)
pozwoli na zmianę tylko na powłokę wymienioną w/etc/shells
(i prawdopodobnie jest dostępna).chsh -l
wymienia alternatywy. Uważaj, niektóre (podobnenologin
) 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ń.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
:Ostatnie pole zawiera powłokę. Modyfikacja pola po ostatniej
:
do poprawnej lub niepoprawnej powłoki będzie działać./bin/false
i/sbin/nologin
oba 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/bash
i/bin/zsh
oba są poprawnymi powłokami, zobacz/etc/shells
listę prawidłowych powłok w swoich systemach. Oto moje,/etc/shells
jeśli jesteś zainteresowany.Tak, możesz używać
chsh
lubusermod
robić te same rzeczy, pamiętaj, że to tylko uporządkowane pliki tekstowe i TIMTOWTDI.źródło
chsh
zamiast ręcznej edycjipasswd
/etc/passwd
Nie miałem ochoty wymieniać żadnego z nich, ponieważ zawsze robię to ręcznie. chsh i usermod mogą to zrobić.Jeśli chsh lub ręczna edycja konfiguracji nie działa, ale podczas logowania wykonywany jest skrypt ~ / .profile, dodaj ten wiersz:
źródło
touch ~/.bash_profile
w przeciwnym razie bash wykona się w pętli: bash bierze~/.profile
na wypadek, gdyby~/.bash_profile
nie istniał.