Wie wechsle ich von einer unbekannten Shell zu Bash?

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 $ statt username@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 tippe ls -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 (wie nologin) 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, anstatt passwd
  • @Michael Es gibt ungefähr 5 (POOMA) verschiedene Möglichkeiten, die Shell in /etc/passwd zu ändern. ' Ich hatte keine Lust, eine davon aufzulisten , weil ich es immer manuell mache. chsh und usermod können dies beide.
  • 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 .

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.