Jak naprawić bash lub auto run / bin / bash podczas logowania SSH

16

Podczas logowania jak rootna moim serwerze wszystko działa poprawnie, ale kiedy loguję się, ponieważ myusernamebash nie działa poprawnie.

Linia zaczyna się od:

$ 

zamiast

myusername@myserver:~$

i wszystkie klawisze specjalne, takie jak klawisze strzałek, klawisze tabulatorów itp., nie będą działać.

Po wpisaniu bin/bashdziała ponownie, ale chcę naprawić problem lub uruchomić się automatycznie bin/bashprzy logowaniu. Jak mogę to naprawić?


źródło

Odpowiedzi:

16

Musisz tylko zmienić powłokę. Jako ten użytkownik uruchom:

$ chsh -s /bin/bash

Następnie wyloguj się i zaloguj ponownie.

Po wykonaniu tej czynności monit nie wygląda tak, jak chcesz, musisz zacząć dostosowywać zmienną PS1 środowiska.

EEAA
źródło
Jest to właściwie niebezpieczne, ponieważ pytanie dotyczy rootużytkownika. Prawdopodobnie nie używa Linuksa. Root powinien pozostać z domyślną powłoką, ponieważ sprzedawca prawdopodobnie będzie liczyć na to, że będzie to kshcokolwiek innego. Zamiast tego prawdziwa odpowiedź brzmi: „i tak nie powinieneś logować się jako root”.
bahamat
12

Musisz zmienić powłokę. Uruchom polecenie

chsh -s /bin/bash

następnie zaloguj się ponownie.

Jednak nie wszyscy użytkownicy mają prawo do zmiany własnej powłoki. Jeśli używasz, sudopamiętaj, aby dodać swoją nazwę użytkownika do chshpolecenia jako

sudo chsh <username> -s /bin/bash

w przeciwnym razie nieumyślnie zmienisz powłokę na root.

Mikael Fremling
źródło
Uczciwy punkt. Lekko rozszerzył odpowiedź.
Mikael Fremling
Byłem bardzo naiwny, próbując: sudo chsh -s /bin/bashponieważ mój użytkownik nie miał uprawnień do zmiany powłoki. Twoja odpowiedź pomogła mi rozwiązać. Dzięki!
Edenshaw
5

Jednym z możliwych powodów jest to, że domyślną powłoką nazwy użytkownika nie jest bash.

Możesz sprawdzić powłokę bieżącego użytkownika za pomocą:

  • echo ${SHELL}
  • echo $0

Aby trwale zmienić powłokę użytkownika, zobacz man chsh np .:

chsh -s /bin/bash
H.-Dirk Schmitt
źródło
2

Jeśli twoje hasło użytkownika sudo jest wyłączone, możesz /etc/passwdbezpośrednio edytować , znaleźć linię, w której znajduje się użytkownik i zmienić ścieżkę powłoki na /bin/bash.

Oto wyjaśnienie formatu / etc / passwd .

Foman
źródło
0

Chciałem tylko dodać jeszcze jedną rzecz.

Jeśli wymagany jest dostęp do sudo, aby zmienić bash dla tego użytkownika, musisz również podać swoją nazwę użytkownika w poleceniu sudo, ponieważ bez nazwy użytkownika będzie ona dotyczyła użytkownika root.

$ sudo chsh -s /bin/bash <user>
Prateek
źródło