2009-09-25 12:03:09 +0000 2009-09-25 12:03:09 +0000
107
107

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

Ich habe ein .bash_profile in meinem Home-Verzeichnis, aber es wird bei der Anmeldung nicht ausgeführt. Wenn ich folgendes mache, dann scheint es so zu sein, wie ich es erwarte:

ssh myhost
bash
source ~/.bash_profile

Aber normalerweise passiert das alles beim Anmelden. Was denken Sie?

Antworten (8)

176
176
176
2009-09-25 12:08:58 +0000

Verwenden Sie:

chsh

Geben Sie Ihr Passwort ein und nennen Sie den Pfad zur gewünschten Shell.

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

37
37
37
2009-09-25 12:09:20 +0000

Zusätzlich zu Akiras Antwort können Sie auch Ihre Datei /etc/passwd bearbeiten, um Ihre Standardshell anzugeben.

Sie werden eine Zeile wie dieses Beispiel finden:

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

Die Shell wird am Ende angegeben.

4
4
4
2009-09-25 12:14:23 +0000

Sie könnten Ihr Terminalprogramm überprüfen. Es könnte so konfiguriert sein, dass es /bin/sh und nicht /bin/bash ausführt

Die 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 von .bashrc zu beziehen (vermeiden Sie zirkuläre Abhängigkeiten!) oder Ihr Terminalprogramm so zu konfigurieren, dass /bin/bash -l als Shell-Programm ausgeführt wird.

4
4
4
2018-01-25 18:44:30 +0000

Bash einschalten:

$ /bin/bash

Shell für Benutzer ändern:

$ sudo usermod -s /bin/bash username

wo:

-s, --shell SHELL new login shell for the user account
2
2
2
2010-06-01 11:40:25 +0000

Eine Alternative ist, Ihr Startup-Skript in .profile umzubenennen. Diese Datei wird von den meisten Unix-Shells als Quelle verwendet.

1
1
1
2019-11-17 19:17:11 +0000

Wenn Sie Ihren Benutzernamen in der Datei /etc/passwd nicht sehen [dies ist der Fall, wenn Ihr System unter der Kontrolle einer anderen Domäne steht, z. B. in IT-Firmen] oder es heißt “user not found” mit der Option chsh, dann könnte Ihnen der folgende Prozess helfen.

Die Logik hinter dem folgenden Trick -> Unter Ubuntu ist /bin/sh ein Bindestrich. Sie können Ihr System auf die Verwendung von bash umstellen. Unter Ubuntu ist /bin/sh ein symbolischer Link auf dash. Um dies zu ändern, führen Sie

sudo dpkg-reconfigure dash

aus und drücken Sie No, um zu bash zu wechseln.

Gehen Sie nun zu Terminal->Bearbeiten->Voreinstellungen->Befehl und markieren Sie das Kontrollkästchen mit der Anweisung

Befehl als Anmeldeshell ausführen

Und das war’s.

1
1
1
2019-06-27 13:29:35 +0000

Um eine beliebige Shell zu Ihrer Standard-Shell zu machen, vergewissern Sie sich zunächst, dass sie auf Ihrem Computer installiert ist und erkannt wird, indem Sie sich den Inhalt von /etc/shells ansehen:

$ 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

Dann verwenden Sie chsh, um Ihre Shell zu ändern:

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

Referenzen

  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
0
0
0
2018-09-15 19:37:41 +0000

Es gibt nicht genug Informationen in Ihrer Frage, um das mit Sicherheit sagen zu können, aber ich hatte das gleiche Problem schon einmal. Angenommen, Sie haben bereits /bin/bash in Ihrem Passworteintrag eingestellt, dann könnte es an der Art und Weise liegen, wie Ihr Terminal gestartet wird.

Wenn Sie versuchen, ein GUI-Terminal zu starten, sagen wir gnome-terminal, erwarten Sie vielleicht, dass die Shell Ihre Bash-Startdateien liest. Dies geschieht jedoch auf Ubuntu und vielleicht auch anderen Systemen standardmäßig nicht.

Die Art und Weise, wie ich es auf Ubuntu behoben habe, ist, die gnome-terminal-Einstellungen zu bearbeiten und den Startbefehl auf bash -l zu setzen. -l ist die Abkürzung für --login. Dies weist die Bash an, als Login-Shell zu starten, was dazu führt, dass sie die Startskripte lädt, die man erhält, wenn man sich über ssh anmeldet.

Ich bin mir sicher, dass es eine gute Begründung dafür gibt, dass dies so ist, aber ich fand es überraschend und mehr als nur ein bisschen ärgerlich, da ich dieselben Profile auf Linux-, Cywgin- und Macos-Systemen verwende.