Ich habe einen gehosteten Debian-Server. Wenn ich mich über ssh anmelde, werde ich mit einer sh-Umgebung begrüßt. Wie ändere ich es, damit ich in einer Bash-Umgebung anfange?
Ich habe einen gehosteten Debian-Server. Wenn ich mich über ssh anmelde, werde ich mit einer sh-Umgebung begrüßt. Wie ändere ich es, damit ich in einer Bash-Umgebung anfange?
Antworten:
Als normaler Benutzer können Sie Ihre Standardanmeldeshell mit dem chshBefehl ändern . Hier ist ein Beispiel:
chsh -s /bin/bash
Eine andere Möglichkeit ist die Verwendung von usermod als root:
usermod -s /bin/bash username
adduser, sollte es standardmäßig auf bash eingestellt sein. Die Standardeinstellung ist in konfiguriert /etc/adduser.conf. Andernfalls geben Sie die Shell explizit mit an useradd.
Sie bearbeiten, /etc/passwdwo der letzte Eintrag die Standard-Shell ist. Mach es /bin/bash.
Alternativ können Sie die Systemvorgabe ändern, dass Sie /bin/shnicht bash sind.
/bin/shsein /bin/dash. Und für das, was es wert ist, sind die beiden anderen Antworten identisch und erreichen dasselbe Ziel mit unterschiedlichen Mitteln. Wie auch immer.
/etc/passwdwerden dringend empfohlen. Ein Bearbeitungsfehler kann die Anmeldung für alle Benutzer unterbrechen und zur Reparatur ein Wiederherstellungsmedium oder einen Start im Einzelbenutzermodus erforderlich machen. Es gibt Werkzeuge wie zum Beispiel usermodzum Wechseln /etc/passwd.
/etc/passwd.
/bin/bashund /bin/shAusführung identisch sind --posix, kann zu unerwünschten Ergebnissen führen.
/bin/bashganzen Jahre auf allen Maschinen als meine Muschel verwendet. Sie brauchen ein konkreteres Argument.
Die Standard-System-Shell /bin/shin den letzten Ubuntu-Versionen ist konfiguriert /bin/dash. Durch einfaches Ausführen des folgenden Befehls:
sudo dpkg-reconfigure dash
Sie können es auf den alten Standardwert von zurücksetzen /bin/bash.
Auf diese Weise können Sie den gewünschten Effekt erzielen, bashindem Sie eine interaktive Shell verwenden, ohne die Benutzereinstellungen zu ändern (Nein chshoder usermod). Dies funktioniert für alle Benutzer, für die derzeit die Shell festgelegt ist /bin/sh.
Dies hat nur einen kleinen Nachteil: Die Startzeit von Ubuntu kann sich geringfügig verlängern, da dashweniger Arbeitsspeicher zum Laden und etwas schneller zum Ausführen benötigt wird (kein Wunder, da die Funktionen hier so begrenzt sind). Ich denke jedoch, dass es ziemlich schwierig sein wird, diesen Effekt zu messen, insbesondere für die Hosting-Umgebung.
Außerdem ist es manchmal ärgerlich, Shell-Skripte zu sehen, die nicht ordnungsgemäß funktionieren, da sie einige basherweiterte Funktionen verwenden, die von nicht unterstützt werden dash. Wenn Sie dieses Rezept verwenden, stellen Sie sicher, dass dies nicht geschieht.
Weitere Informationen finden Sie im Ubuntu-Wiki zu diesem Problem .
/bin/shwird als Interpreter für POSIX-kompatible Shell-Skripte verwendet - es ist nicht unbedingt die beste interaktive Shell. Wenn Sie bashIhre System-Shell sein möchten , sollten Sie Ihre bevorzugte Login-Shell mithilfe von chshoder durch geeignete adduserAufrufe festlegen . using dpkg-reconfigureist eine schlechte Wahl, wenn userA zsh und userB bash haben möchte und beide darauf bestehen, / bin / sh als Standardshell zu haben.
zsh, und BenutzerB für bash, haben sie es. Wenn userC so konfiguriert ist, shwird er haben bash, was ohnehin der aktuelle Ubuntu-Standard für neue Benutzer ist
dpkg-reconfigure zshzu Satz zshals / bin / sh und dann dpkg-reconfigure dashauf Set dashals / bin / sh , die Art eines Deadlocks ist; Ich sage hauptsächlich, dass es vorzuziehen ist, die Login-Shell auf die Shell zu setzen, die man verwenden möchte, anstatt durch Rahmen zu gehen, um / bin / sh zu einer guten Login-Shell zu machen.
dpkg-reconfigure dashdas shdeuten kann bash, anstatt verkrüppelt dash. Alle anderen Shells bleiben erhalten.
Für den Fall, dass Sie versuchen, ein freigegebenes Konto zu verwenden (aus welchem Grund auch immer) und die Standard-Shell nicht ändern können, können Sie ausführen
ssh -t <user@hostname> bash -l
Wenn Sie Ihre Umgebung von einer anderen Shell fernhalten müssen, können Sie diese Shell zuerst ausführen. beispielsweise
ssh -t <user@hostname> ksh -c bash -l
-lOption?