Wie mache ich Bash zu meiner Standard-Shell unter Ubuntu?

101

Ich habe ein .bash_profilein meinem Home-Verzeichnis, aber es wird bei der Anmeldung nicht ausgeführt. Wenn ich Folgendes tue, scheinen die Dinge so zu sein, wie ich es erwartet habe:

ssh myhost
bash
source ~/.bash_profile

Aber normalerweise passiert das alles beim Einloggen. Gedanken?

James A. Rosen
quelle
3
Stellen Sie außerdem sicher, dass Sie kein ~/.profileoder haben ~/.bash_login, da nur eines der drei Quellen verwendet wird. (Ich habe die genaue Reihenfolge vergessen.)
Grawity
3
Warum haben Sie eine andere Frage im Titel und eine andere im Hauptteil Ihres Beitrags?
Pabouk

Antworten:

170

Verwenden:

chsh

Geben Sie Ihr Passwort ein und geben Sie den Pfad zu der Shell an, die Sie verwenden möchten.

Für Bash wäre das /bin/bash. Für Zsh wäre das /usr/bin/zsh.

Akira
quelle
15
+1 - nicht sicher, warum das OP entschieden hat, dass das Bearbeiten der Passwortdatei eine bessere Wahl ist, aber dies ist die beste Antwort
kdgregory
1
Ja, schlagen Sie mich, das ist der Standard.
John T
1
Und auf Ubuntu ist der Pfad zu der Shell, die Sie verwenden möchten ... / bin / bash (und / bin / sh ist nicht dasselbe)
Harry Wood
49
Oder Sie können verwendensudo chsh -s /bin/bash username
Oleg Vaskevich
7
Sie müssen sich abmelden und erneut anmelden, um diese Änderung zu sehen.
Neil Traft
37

Neben der Antwort von akira können Sie auch die Datei / etc / passwd bearbeiten , um Ihre Standard-Shell anzugeben.

Sie finden eine Zeile wie diese:

john:x:1000:1000:john,,,:/home/john:/bin/sh

Die Shell wird am Ende angegeben.

John T
quelle
8
Es ist besser, den Befehl 'chsh' zu verwenden, wie er von akira vorgeschlagen wird - weniger Chance, versehentlich etwas zu vermasseln.
Lars Haugseth
5
nicht ‚chsh‘ zu erwähnen ist verfügbar, wenn Sie nicht schreiben kann / etc / passwd
Quack Quixote
1
Wenn Sie jedoch Zugriff auf Änderungen haben /etc/passwdund vorsichtig sind, nutzt John die Tools, die das System bereitstellt.
AJP
3
Sie müssen sich abmelden und erneut anmelden, um diese Änderung zu sehen.
Neil Traft
2
Wenn Sie einen Server ohne Benutzerkennwörter betreiben, der Zugriff nur über öffentliche / private SSH-Schlüssel ermöglicht, ist dies auch sehr sinnvoll. chsh benötigt ein Passwort.
Keith John Hutchison
4

Möglicherweise überprüfen Sie Ihr Terminalprogramm. Möglicherweise ist es so konfiguriert, dass / bin / sh anstelle von / bin / bash ausgeführt wird

Bash führt .bash_profile nur für Anmeldesitzungen aus. .bashrc wird für alle Bash-Sitzungen ausgeführt, nicht nur für Anmeldesitzungen. Versuchen Sie, .bash_profile aus .bashrc zu beziehen (vermeiden Sie zirkuläre Abhängigkeiten!) Oder konfigurieren Sie Ihr Terminalprogramm so, dass / bin / bash -l als Shell-Programm ausgeführt wird.

Tadeusz A. Kadłubowski
quelle
2
Das Terminalprogramm hat nichts mit dem Problem zu tun, da es das sshd auf dem Remote-Computer ist, das die neue Shell erzeugt.
Akira
2

Eine Alternative besteht darin, das Startskript in .profile umzubenennen. Diese Datei wird von den meisten Unix-Shells als Quelle verwendet .

Mathematik
quelle
2

Bash aktivieren:

$ /bin/bash

Shell für Benutzer ändern:

$ sudo usermod -s /bin/bash username

wo:

  -s, --shell SHELL             new login shell for the user account
Umanshield
quelle
2
(1) Was meinst du mit "enable bash"? (2) Der Benutzer möchte seine eigene Login-Shell auf einem entfernten System ändern . Warum nehmen Sie an, dass er sudoZugriff auf dieses System hat? Warum geben Sie Anweisungen zum Ändern der Anmeldeshell eines anderen Benutzers?
G-Man
Chsh zu benutzen (wie oben vorgeschlagen) hat bei mir nicht funktioniert. Dieser Befehl hat!
Per Lindberg,
1

Um eine Shell zu Ihrer Standard-Shell zu machen, überprüfen Sie zunächst, ob sie auf Ihrem Computer installiert und erkannt wurde, indem Sie den Inhalt von /etc/shells:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

Verwenden Sie dann chsh, um Ihre Shell zu ändern:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

Verweise

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh
Behrang
quelle
0

Ihre Frage enthält nicht genügend Informationen, die ich mit Sicherheit mitteilen kann, aber ich bin bereits auf dasselbe Problem gestoßen. Angenommen, Sie haben bereits / bin / bash in Ihrer Passworteingabe festgelegt, dann wird Ihr Terminal möglicherweise so gestartet.

Wenn Sie versuchen, ein GUI-Terminal zu starten, können gnome-terminalSie davon ausgehen, dass die Shell Ihre Bash-Startdateien liest. Dies geschieht jedoch nicht standardmäßig auf Ubuntu und möglicherweise anderen Systemen.

Ich habe es unter Ubuntu behoben, indem ich die Einstellungen für das Gnome-Terminal bearbeite und den Startbefehl auf setze bash -l. -list eine Abkürzung für --login. Dadurch wird bash angewiesen, als Anmeldeshell zu starten, wodurch die Startskripte geladen werden, sobald Sie sich über ssh anmelden.

Ich bin sicher, dass es eine gute Begründung dafür gibt, wie es ist, aber ich fand es überraschend und mehr als ärgerlich, dass ich die gleichen Profile auf Linux-, Cywgin- und Macos-Systemen teile.

edk750
quelle