Wie starte ich in Bash, wenn ich auf meinen Server starte?
29
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?
usermod arbeitete wie ein Zauber. Gibt es eine Möglichkeit, die Standardeinstellung auf Bash festzulegen, wenn ich einen neuen Benutzer hinzufüge, oder muss ich den Befehl jedes Mal ausführen?
Wenn Sie es verwenden 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.
Jordan
5
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.
Yo, was ist los mit der Drive-By-Ablehnung? ZB Ubuntu funktioniert standardmäßig zu /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.
Dirk Eddelbuettel
4
Manuelle Bearbeitungen von /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.
Jordan
1
Unsinn. Läuft Linux seit '94 hier. Nie gesprengt /etc/passwd.
Dirk Eddelbuettel
2
Schön zu hören, dass Sie sehr vorsichtig waren. Nicht jeder hat. Ein weiterer Hinweis zu Ihrem Update, dessen Start /bin/bashund /bin/shAusführung identisch sind --posix, kann zu unerwünschten Ergebnissen führen.
Jordan
Schauen Sie, ich bin seit 1995 auch ein Debian-Entwickler / Betreuer. Wir hatten Bash als Standard, wir haben aus verschiedenen Gründen auf einfachere Shells umgestellt. Ich habe die /bin/bashganzen Jahre auf allen Maschinen als meine Muschel verwendet. Sie brauchen ein konkreteres Argument.
Dirk Eddelbuettel
2
Sie müssen Ihr Benutzerprofil bearbeiten, dies können Sie direkt durch Bearbeiten der /etc/passwdDatei tun , oder Sie können den usermodBefehl verwenden, um dies für Sie zu tun. Die gesuchte Syntax sieht ungefähr so aus:
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 .
Sie sollten die Anwendungsfälle auseinanderhalten: /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.
Umläute
Wenn BenutzerA explizit für konfiguriert ist 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
mvp
sicher, aber Ihre Lösung so etwas wie vorgeschlagen 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.
Umläute
Ich habe nur gesagt, dass dpkg-reconfigure dashdas shdeuten kann bash, anstatt verkrüppelt dash. Alle anderen Shells bleiben erhalten.
MVP
1
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
Antworten:
Als normaler Benutzer können Sie Ihre Standardanmeldeshell mit dem
chsh
Befehl ändern . Hier ist ein Beispiel:Eine andere Möglichkeit ist die Verwendung von usermod als root:
quelle
adduser
, sollte es standardmäßig auf bash eingestellt sein. Die Standardeinstellung ist in konfiguriert/etc/adduser.conf
. Andernfalls geben Sie die Shell explizit mit anuseradd
.Sie bearbeiten,
/etc/passwd
wo der letzte Eintrag die Standard-Shell ist. Mach es/bin/bash
.Alternativ können Sie die Systemvorgabe ändern, dass Sie
/bin/sh
nicht bash sind.quelle
/bin/sh
sein/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/passwd
werden 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 Beispielusermod
zum Wechseln/etc/passwd
./etc/passwd
./bin/bash
und/bin/sh
Ausführung identisch sind--posix
, kann zu unerwünschten Ergebnissen führen./bin/bash
ganzen Jahre auf allen Maschinen als meine Muschel verwendet. Sie brauchen ein konkreteres Argument.Sie müssen Ihr Benutzerprofil bearbeiten, dies können Sie direkt durch Bearbeiten der
/etc/passwd
Datei tun , oder Sie können denusermod
Befehl verwenden, um dies für Sie zu tun. Die gesuchte Syntax sieht ungefähr so aus:quelle
Die Standard-System-Shell
/bin/sh
in den letzten Ubuntu-Versionen ist konfiguriert/bin/dash
. Durch einfaches Ausführen des folgenden Befehls:Sie können es auf den alten Standardwert von zurücksetzen
/bin/bash
.Auf diese Weise können Sie den gewünschten Effekt erzielen,
bash
indem Sie eine interaktive Shell verwenden, ohne die Benutzereinstellungen zu ändern (Neinchsh
oderusermod
). 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
dash
weniger 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
bash
erweiterte Funktionen verwenden, die von nicht unterstützt werdendash
. Wenn Sie dieses Rezept verwenden, stellen Sie sicher, dass dies nicht geschieht.Weitere Informationen finden Sie im Ubuntu-Wiki zu diesem Problem .
quelle
/bin/sh
wird als Interpreter für POSIX-kompatible Shell-Skripte verwendet - es ist nicht unbedingt die beste interaktive Shell. Wenn Siebash
Ihre System-Shell sein möchten , sollten Sie Ihre bevorzugte Login-Shell mithilfe vonchsh
oder durch geeigneteadduser
Aufrufe festlegen . usingdpkg-reconfigure
ist 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ürbash
, haben sie es. Wenn userC so konfiguriert ist,sh
wird er habenbash
, was ohnehin der aktuelle Ubuntu-Standard für neue Benutzer istdpkg-reconfigure zsh
zu Satzzsh
als / bin / sh und danndpkg-reconfigure dash
auf Setdash
als / 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 dash
dassh
deuten kannbash
, anstatt verkrüppeltdash
. 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
Wenn Sie Ihre Umgebung von einer anderen Shell fernhalten müssen, können Sie diese Shell zuerst ausführen. beispielsweise
quelle
-l
Option?Weder
chsh
nochusermod
arbeiteten sie für mich, aber ich fand heraus, dass Sie dies durch PuTTY tun können.Gehe zu
Connection > SSH
und setze denRemote command
aufbash
.Beachten Sie, dass Sie nicht zu
exit
Ihrer Standard-Shell wechseln können, sondern lediglich die Verbindung trennen.quelle