Ich war überrascht, dass ich diese Frage nicht bereits auf der Website gefunden habe. Also kam heute $
Nachdem ich mich als neuer Benutzer angemeldet hatte, war dies unerwartet, da die Eingabeaufforderung meines Hauptbenutzers mit username@computername:~$
beginnt.
Wie wechsle ich davon? andere Shell zum Bash?
Kommentare
- Nur weil
$
stattusername@computername:~$
bedeutet nicht ' bedeutet, dass es nicht ' t bash war. Die genaue Formatierung der Eingabeaufforderung wird durch die PS1-Variable festgelegt, die für verschiedene Benutzer unterschiedlich eingerichtet oder angepasst werden kann. - @mouche Re: @frabjous
echo $SHELL
Um herauszufinden, was Ihre aktuelle Shell ist. - @mouche @frabjous und das Beginnen mit einem $ ist eigentlich üblich für Bash. Einige Nicht-Bash-Shells wie zsh verwenden das% out of the box. Ich glaube, andere Shells verwenden es andere Dinge.
- @mouche
/bin/sh
bedeutet ' oft nicht viel, dass ' ist normalerweise ein Symlink zu etwas anderem. Ich ' d tippels -l /bin/sh
, um zu sehen, zu was ' ein Symlink ist. In einigen Fällen, wenn ein Symlink zu etwas sein Verhalten ändert, denke ich nicht, dass Bash so ist. - @xenoterracide – Verwenden von
bash
as/bin/sh
deaktiviert viele Bash-Funktionen (wechselt in den POSIX-Kompatibilitätsmodus).
Antwort
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 chsh(1)
verwenden. Beispielverwendung: chsh -s /bin/bash $USER
Kommentare
- Ändert chsh die Shell dauerhaft oder nur für die aktuelle Sitzung ?
- @mouche Permanent; Es ändert Ihren Eintrag in
/etc/passwd
- @mouche.
chsh(1)
erlaubt nur den Wechsel zu einer aufgelisteten Shell in/etc/shells
(und ist vermutlich verfügbar).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). Möglicherweise gibt es lokale Ergänzungen für spezielle Zwecke.
Antwort
Sie geben bash
ein. Wenn Sie möchten, dass dies dauerhaft ist, ändern Sie die Standard-Shell in /bin/bash
, indem Sie /etc/passwd
bearbeiten.
Hier „s Einige Ausschnitte aus meinem /etc/passwd
:
avahi:x:84:84:Avahi daemon:/:/bin/false xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh postgres:x:88:88::/var/lib/postgres:/bin/zsh bob:x:1001:1001::/home/bob:/bin/bash usbmux:x:140:140:usbmux user:/:/sbin/nologin
Das allerletzte Feld enthält die Shell und ändert das Feld nach dem letzten :
für eine gültige oder ungültige Shell funktioniert. /bin/false
und /sbin/nologin
bedeuten beide den Benutzer Es gibt keine echte Login-Shell. Wenn Pam jedoch nicht richtig eingerichtet ist, bedeutet dies nicht, dass sie sich nicht anmelden können (ich habe einen Fehler in Arch Linux gemeldet, da Sie sich grafisch anmelden können, ohne eine Login-Shell zu haben). /bin/bash
und /bin/zsh
sind beide gültige Shells. Eine Liste der gültigen Shells finden Sie unter /etc/shells
Ihre Systeme. Hier ist meine /etc/shells
, wenn Sie interessiert sind.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Ja, Sie können oder usermod
Um dasselbe zu tun, denken Sie bitte daran, dass dies nur strukturierte Textdateien und TIMTOWTDI sind.
Kommentare
- Sie möchten wahrscheinlich
chsh
verwenden, anstattpasswd
- Das Herumspielen mit Konfigurationsdateien ist eine schlechte Idee (TM). Ein Fehler kann das System unbrauchbar machen. Ja, dies ist oft der einzige / schnellste Weg, aber dann mit äußerster Sorgfalt .
/etc/passwd
zu ändern. ' Ich hatte keine Lust, eine davon aufzulisten , weil ich es immer manuell mache. chsh und usermod können dies beide.
Antwort
Wenn chsh oder manuelles Bearbeiten der Konfiguration nicht funktioniert, funktioniert dies nicht. Wenn beim Anmelden jedoch ein ~ / .profile-Skript ausgeführt wird, fügen Sie diese Zeile hinzu:
exec /bin/bash --login
Kommentare
- Nachdem ich mich eine Weile umgesehen hatte, war dies die Lösung, die ich brauchte. Danke!
- Tolle Idee, besonders wenn die Shell beim Start Quellen für diese Datei ausgewählt hat …
-
touch ~/.bash_profile
oder anderweitig wird bash in einer Schleife ausgeführt: bash nimmt~/.profile
, falls~/.bash_profile
nicht ' existiert nicht.