Usunięto ZSH, nie można ponownie się zalogować

14

Więc zainstalowałem zshi nie podobało mi się to. więc zrobiłemapt-get remove zsh

Od tego momentu nie mogę ponownie się zalogować, klikam mojego użytkownika ... a potem po prostu wracam do ekranu logowania. Mogę zalogować się tylko za pomocą Guest session.

Myślę, że problem jest spowodowany, ponieważ defualt shell mojego użytkownika to zsh i już nie istnieje ..

Jak mogę go ponownie zainstalować z sesji gościa, aby zmienić domyślną powłokę moich użytkowników dla gościa?

Nawet próbując się ctrl+alt+f2/6zalogować, wpisuję mojego użytkownika i hasło. logowanie się powiodło, ale wróciłem do logowania.

Jakieś pomysły?

tubu13
źródło
Z drugiej strony problem powłoki prawdopodobnie nie miał wpływu. Żadna powłoka użytkownika nie jest odradzana po załadowaniu DM przed załadowaniem DE (i to prawdopodobnie nie stanowiłoby problemu). I nie jestem pewien co do ~/.bashrc- ~/.profilepętli albo: Przetestowałem zarówno oczyszczenie powłoki użytkownika i tworzeniu ~/.bashrc- ~/.profilepętlę w VM i zawsze byłem w stanie zalogować się przez LightDM, choć nie byli w stanie zalogowania przez konsolę z pętlą ~/.bashrc- ~/.profile(ale nadal działał LightDM). W każdym razie nie możesz zaakceptować mojej odpowiedzi.
Kos

Odpowiedzi:

16

Użytkownik-gość nie ma uprawnień do uruchamiania sudolub pkexec, które (chyba że jesteś rootem, którym nie jesteś) są wymagane do zmiany powłoki innego użytkownika.

Więc jedynym rozwiązaniem, które mi się przydarza, jest uruchomienie się w powłoce root i zmiana powłoki użytkownika jako root:

chsh -s /bin/bash user

Gdzie userjest nazwa użytkownika użytkownika.

kos
źródło
Można się zastanawiać, jak to naprawić, gdy powłoka roota jest również zsh ... LiveCD?
Kevin,
@Kevin Ta odpowiedź jest prawdopodobnie nieprawidłowa. Pancerz nie ma wpływu na to, że użytkownik nie jest zalogowany do DE, ponieważ po załadowaniu DM przed załadowaniem DM nie jest odradzana. Nie wiem, czy są lepsze opcje na wypadek, gdyby ktoś zdołał się w ten sposób zablokować, ale przypuszczam, że używanie Live DVD i /etc/passwdręczna zmiana powinny działać.
Kos
4
@Kevin Prawdopodobnie z opcją rozruchu, taką jak init=/bin/bash.
user253751
2

Zaloguj się jako root lub uruchom w powłoce root i edytuj wpis powłoki w / etc / passwd na „/ bin / sh”. Następnie możesz zalogować się ponownie jako siebie i zmienić rzeczy.

Ted Cahall
źródło
1

Oprócz tego, co powiedział @kos ..

Z jakiegoś powodu dodałem source ~/.profiledo mojego pliku .bashrc (nie wiem dlaczego ... gdzieś go przeczytałem) I mój .profileplik załadował ten, .bashrcktóry powoduje cykliczne ładowanie !.

Usunięcie rozwiązania source..+ @kos załatwiło sprawę!

tubu13
źródło
Komputery stacjonarne z Linuksem mają w pewnym .profilesensie zepsuty .bashrcparadygmat „ for-env-vars” i „jeden na login” / aliasy. Ponieważ czasami potrzeba env Vars ustawiony na rzeczy do pracy, widzę, dlaczego można by pomyśleć, że to dobry pomysł, aby source ~/.profilez .bashrc. (Zalogowanie się do sesji pulpitu może nie spowodować wygenerowania profilu w celu ustawienia zmiennych env dla wszystkich dzieci sesji).
Peter Cordes
1

Dla tych, którzy mają problem z odinstalowaniem Zsh. Spróbuj wykonać następujące kroki.

  1. Zaloguj się jako root za pomocą trybu odzyskiwania. Na tej odpowiedzi możesz sprawdzić, jak to zrobić. /ubuntu//a/92558/104228
  2. Po zalogowaniu się jako root. Otwarte /etc/passwd. Znajdź swój wpis użytkownika i zmień z /usr/bin/zshna /bin/sh. Zapisz plik i uruchom ponownie jako normalny krok. Powinieneś zalogować się normalnie.
  3. Po ponownym uruchomieniu systemu Ubuntu. Przekonasz się, że twoja skorupa wygląda tak źle. Uruchom to polecenie chsh -s /bin/bash. Wpisz swoje hasło i wprowadź. Twój pocisk będzie teraz dobrze wyglądał.
  4. Wpisz, sudo apt-get purge --auto-remove zshaby wyczyścić kolejne pakiety zależności zsh.

Mam nadzieję, że ten krok pomoże komuś, kto ma taki sam problem jak ja.

PS. Mój angielski nie jest językiem podstawowym. Mam nadzieję, że mnie rozumiesz.

EThaizone Jo
źródło