Chcę zmienić moją domyślną powłokę z tcsh na bash. Więc próbowałem i oto co się stało:
>sudo chsh userid
Changing the login shell for userid
Enter the new value, or press ENTER for the default
Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd
Rzeczywiście, nie jestem w / etc / passwd. Nie wiem dlaczego.
Co mogę zrobić?
getent passwd <userid>
). Myślę, że to, czy uruchomionychsh
jest obsługiwana w tym przypadku może zależeć od ustawień w/etc/pam.d/
Odpowiedzi:
Mój komputer jest częścią sieci korzystającej z uwierzytelniania rozproszonego, więc moje dane użytkownika nie pojawią się w lokalnym pliku / etc / passwd (ale są widoczne przy użyciu identyfikatora użytkownika getent passwd). (dzięki @steeldriver) W moim przypadku musiałem wykonać polecenie chsh na komputerze głównym.
źródło
Istnieje obejście dla
gnome-terminal
:bash
jako polecenie niestandardowe (fish
lub cokolwiek innego)źródło
Jeśli używasz uwierzytelniania LDAP przez PAM lub coś takiego, musisz znaleźć odpowiedź na swoim serwerze LDAP. Celujmy w Microsoft AD, w którym to przypadku twoje konto domeny nie jest
/etc/passwd
zalogowane, ale możesz zobaczyć swoją własność użytkownika w AD, przezgetent passwd | grep user
.Jeśli na końcu pokazuje, że twoja powłoka jest
/bin/csh
, to dlatego, że w twojej reklamie jest do tego atrybut. Więc jeśli masz konto administratora w AD, możesz to naprawić samodzielnie. W przeciwnym razie po prostu powiedz administratorowi AD, aby włączył zaawansowane funkcje na karcie Widok użytkowników i komputerów usługi Active Directory> Właściwości użytkownika> Atrybuty UNIX . Tam możesz zmienić powłokę logowania na/bin/bash
.Upewnij się, że nie zapomnisz uruchomić:
Źródło: Użytkownik nie istnieje w / etc / passwd podczas próby zmiany domyślnej powłoki .
źródło
Jeśli chcesz zmienić powłokę dla swojego użytkownika, nie musisz być rootem. Po prostu wpisz:
bez
sudo
argumentów i bez.Zobacz także
man chsh
:źródło
> whoami userid > chsh You may not change the shell for 'userid'.
Jeśli nie pamiętasz nazwy użytkownika, możesz użyć
whoami
polecenia, aby Cię zapamiętać.Więc spróbuj z:
Jeśli rzeczywiście nie istnieje wiersz zaczynający się od Twojej nazwy użytkownika w
/etc/passwd
pliku (który wydaje się niewytłumaczalny), możesz dodać nowy taki:Zobacz także: Zrozumienie formatu pliku / etc / passwd .
źródło
Jeśli próbujesz ssh na zdalnym hoście z użytkownikiem domeny, zmiana powłoki może nie być możliwa,
chsh
jak wspomniano w @Masoud. Ale oto proste obejście tego przypadku - za każdym razem, gdy ssh do komputera, wykonaj następujące czynności:ssh my-host -t "zsh --login"
lub
ssh my-host -t "cd /data/repos; zsh --login"
Jeśli chcesz również zalogować się bezpośrednio do innego działającego katalogu.
źródło