Ich war überrascht, dass ich diese Frage nicht bereits auf der Website gefunden habe. Also kam heute $
nach dem ich mich als neuer Benutzer angemeldet habe. Dies war unerwartet, da die Eingabeaufforderung meines Hauptbenutzers mit beginnt username@computername:~$
.
Wie wechsle ich von dieser anderen Shell zu Bash?
$
kam eher alsusername@computername:~$
nicht bedeutet es nicht , bash ist. Die genaue Formatierung der Eingabeaufforderung wird durch die PS1-Variable festgelegt, die für verschiedene Benutzer unterschiedlich eingerichtet oder angepasst werden kann.echo $SHELL
, um herauszufinden, was Ihre aktuelle Shell ist./bin/sh
oft nicht viel, was normalerweise ein Symlink zu etwas anderem ist. Ich würde schreiben, umls -l /bin/sh
zu sehen, worauf es ankommt. In einigen Fällen, in denen ein Symlink zu etwas vorhanden ist, ändert sich sein Verhalten. Ich denke nicht, dass Bash so ist.bash
as werden viele Bash-Funktionen/bin/sh
deaktiviert (es wird in den POSIX-Kompatibilitätsmodus versetzt).Antworten:
Angenommen, die unbekannte Shell unterstützt die Ausführung eines absoluten Befehls, könnten Sie versuchen:
/bin/bash
Um die Standard-Shell zu ändern, würde ich verwenden
chsh(1)
. Beispielnutzung:chsh -s /bin/bash $USER
quelle
/etc/passwd
chsh(1)
nur zu einer Shell gewechselt werden, die in aufgeführt ist/etc/shells
(und vermutlich verfügbar ist).chsh -l
listet die Alternativen auf. Seien Sie vorsichtig, einige (wienologin
) sind für Konten definiert, die niemals zum Anmelden verwendet werden sollten (eine gute Möglichkeit, sich auszusperren). Es kann lokale Ergänzungen für spezielle Zwecke geben.Sie tippen ein
bash
. Wenn dies dauerhaft sein soll, ändern Sie die Standard-Shell/bin/bash
durch Bearbeiten in/etc/passwd
.Hier sind einige Auszüge aus meinem
/etc/passwd
:Das allerletzte Feld enthält die Shell. Das Ändern des Felds nach dem letzten
:
in eine gültige oder ungültige Shell funktioniert./bin/false
und/sbin/nologin
beide bedeuten, dass der Benutzer keine echte Anmeldeshell hat, obwohl wenn pam nicht richtig eingerichtet ist, dies nicht bedeutet, dass er sich nicht anmelden kann (ich habe einen Fehler in Arch Linux gemeldet, weil Sie sich grafisch anmelden können, ohne dies zu müssen eine Login-Shell)./bin/bash
und/bin/zsh
sind beide gültige Shells./etc/shells
Eine Liste der gültigen Shells auf Ihren Systemen finden Sie unter. Hier ist meine,/etc/shells
wenn Sie interessiert sind.Ja, Sie können
chsh
oder verwendenusermod
, um die gleichen Aktionen auszuführen. Denken Sie daran, dass dies nur strukturierte Textdateien und TIMTOWTDI sind.quelle
chsh
anstatt manuell zu bearbeitenpasswd
/etc/passwd
Ich hatte keine Lust, eine davon aufzulisten, da ich es immer manuell mache. chsh und usermod können es beide.Wenn chsh oder die manuelle Bearbeitung der Konfiguration nicht funktionieren, aber beim Anmelden ein ~ / .profile-Skript ausgeführt wird, fügen Sie diese Zeile hinzu:
quelle
touch ~/.bash_profile
Andernfalls wird bash in einer Schleife ausgeführt: bash nimmt den~/.profile
Fall auf,~/.bash_profile
dass er nicht existiert.