To dobre pytanie, ale może być bardziej odpowiednie dla witryny kontroli jakości Linux.
BradleyDotNET
6
ustaw to w / etc / passwd
resultsway
Odpowiedzi:
414
Wypróbuj polecenie linux chsh.
Szczegółowe polecenie to chsh -s /bin/bash. Poprosi Cię o podanie hasła. Domyślna powłoka logowania to /bin/bashteraz. Musisz się wylogować i zalogować ponownie, aby zobaczyć tę zmianę.
Ze strony podręcznika cytowano:
Polecenie chsh zmienia powłokę logowania użytkownika. Określa nazwę początkowej komendy logowania użytkownika. Normalny użytkownik może zmienić powłokę logowania tylko dla swojego konta, administrator może zmienić powłokę logowania dla dowolnego konta
To polecenie zmieni trwale domyślną powłokę logowania.
Uwaga: jeśli twoje konto użytkownika jest zdalne, na przykład przy uwierzytelnianiu Kerberos (np. Enterprise RHEL), nie będziesz mógł z niego korzystać chsh.
chsh: can only change local entries; use ypchsh instead. Zatem ypchsh nie ma żadnej -sopcji
mahmood
10
@ShaktiMalik Myślę, że plik konfiguracyjny jest /etc/passwd, ale nie sprawdziłem go dwukrotnie.
Summer_More_More_Tea
30
Musisz się wylogować i zalogować ponownie, aby zobaczyć tę zmianę.
Neil Traft
22
W moim przypadku miałem dostęp do konta root, ale nie chciałem zadzierać z żadną konfiguracją na rzeczywistym hoście. I dodaje exec /bin/bashsię ~/.profile, co pozwoliło mi, aby zalogować się bezpośrednio do bash bez dokonywania jakichkolwiek zmian na serwerze. (Oryginalna domyślna powłoka była właśnie /bin/sh)
Paul Nelson Baker
2
@BCqrstoO Dziękuję za to. Ale co, jeśli wpiszesz exitbash? Czy wylogujesz się bezpośrednio z serwera, czy po prostu wyjdziesz z basha i przejdziesz do sh, a inny exitwymagany do wylogowania z serwera?
Summer_More_More_Tea
148
Możesz zmienić plik passwd bezpośrednio dla konkretnego użytkownika lub użyć poniższego polecenia
Prawdopodobnie dobrym pomysłem jest wypróbowanie which bashprzed wywołaniem powyższego polecenia; Twój przebieg może się różnić w zależności od lokalizacji. W moim przypadku znaleziono go w/bin/bash
Martin Haeberli
Mogę również dodać, że chshpolecenie jest częścią util-linuxpakietu; i chsh -s $(which bash) $USERpowinien dać wynik taki sam jak powyżej.
Istnieje również -lopcja: „wydrukuj listę powłok”.
Betlista
3
to było chsh -s /bin/bash usernamedla mnie
Salvatorelab
Dziękuję Ci! Pomogło mi to, gdy próbowałem go zmienić dla innego użytkownika
Tobias Feil,
18
/etcPrawdopodobnie powinieneś mieć gdzieś szkielet /etc/skeleton, lub sprawdzić ustawienia domyślne, prawdopodobnie /etc/defaultczy coś. Są to skrypty definiujące standardowe zmienne środowiskowe ustawiane podczas logowania.
Jeśli dotyczy to tylko Twojego konta: sprawdź (ukryty) plik ~/.profilei ~/.login. Lub wygeneruj je, jeśli nie istnieją. Są one również oceniane przez proces logowania.
Plus 1 za konkretną odpowiedź na pytanie (domyślna powłoka). W systemie Red Hat Linux jest to określone w/etc/default/useradd
geedoubleya
@geedoubleya Czy możesz określić, jaka jest różnica między domyślną a powłoką logowania?
Betlista,
1
Cześć @Betlista Domyślną powłoką jest powłoka używana dla powłoki logowania nowego użytkownika podczas ich tworzenia, chyba że jako argument podano konkretną powłokę.
Odpowiedzi:
Wypróbuj polecenie linux
chsh
.Szczegółowe polecenie to
chsh -s /bin/bash
. Poprosi Cię o podanie hasła. Domyślna powłoka logowania to/bin/bash
teraz. Musisz się wylogować i zalogować ponownie, aby zobaczyć tę zmianę.Ze strony podręcznika cytowano:
To polecenie zmieni trwale domyślną powłokę logowania.
Uwaga: jeśli twoje konto użytkownika jest zdalne, na przykład przy uwierzytelnianiu Kerberos (np. Enterprise RHEL), nie będziesz mógł z niego korzystać
chsh
.źródło
chsh: can only change local entries; use ypchsh instead
. Zatem ypchsh nie ma żadnej-s
opcji/etc/passwd
, ale nie sprawdziłem go dwukrotnie.exec /bin/bash
się~/.profile
, co pozwoliło mi, aby zalogować się bezpośrednio do bash bez dokonywania jakichkolwiek zmian na serwerze. (Oryginalna domyślna powłoka była właśnie/bin/sh
)exit
bash? Czy wylogujesz się bezpośrednio z serwera, czy po prostu wyjdziesz z basha i przejdziesz do sh, a innyexit
wymagany do wylogowania z serwera?Możesz zmienić plik passwd bezpośrednio dla konkretnego użytkownika lub użyć poniższego polecenia
Następnie wyloguj się i zaloguj
źródło
which bash
przed wywołaniem powyższego polecenia; Twój przebieg może się różnić w zależności od lokalizacji. W moim przypadku znaleziono go w/bin/bash
chsh
polecenie jest częściąutil-linux
pakietu; ichsh -s $(which bash) $USER
powinien dać wynik taki sam jak powyżej.-l
opcja: „wydrukuj listę powłok”.chsh -s /bin/bash username
dla mnie/etc
Prawdopodobnie powinieneś mieć gdzieś szkielet/etc/skeleton
, lub sprawdzić ustawienia domyślne, prawdopodobnie/etc/default
czy coś. Są to skrypty definiujące standardowe zmienne środowiskowe ustawiane podczas logowania.Jeśli dotyczy to tylko Twojego konta: sprawdź (ukryty) plik
~/.profile
i~/.login
. Lub wygeneruj je, jeśli nie istnieją. Są one również oceniane przez proces logowania.źródło
/etc/default/useradd