Warum wird es nicht empfohlen, die Standard-Shell für root uset auf eine Nicht-POSIX-Shell zu setzen?

485
Cy8099

Ich werde die Standard-Shell meiner Root von bash auf fish ändern. Soweit ich weiß, ist Fisch keine POSIX-Standardhülle. Auf der anderen Seite haben Kernel oder andere Dinge im System möglicherweise eine Beziehung zu POSIX-Standards. Daher ist es nicht zu empfehlen, die Standard-Shell von root auf eine Nicht-POSIX-Shell zu setzen, da dies zu Problemen in meinen Teilen des Betriebssystems führen kann. Ich habe Leute zu einigen Themen gesehen, die Ratschläge anderer nicht als Standard-Shell für den Root-Benutzer auf eine Nicht-POSIX-Shell setzen! Ist es richtig?

Soll ich meine Standard-Shell für root in Nicht-POSIX-Shell ändern oder nicht? (Ich freue mich, wenn du es mit Gründen erklärst, ich bin ein Neuling in Unix-ähnlichen Welten!)

3
Ich habe den Verdacht, dass die Empfehlung hauptsächlich auf andere Shells zurückzuführen ist, die in `/ usr` leben und / oder dort Bibliotheksabhängigkeiten haben (was für split- / usr-Systeme relevant ist). Außerdem wird die _login_-Shell von root vom System überhaupt nicht verwendet - solange `/ bin / sh` selbst unverändert bleibt, sollte dies in Ordnung sein. grawity vor 6 Jahren 1

1 Antwort auf die Frage

1
Kurtis Rader

Wenn Sie Ihre Standard-Login-Shell SHELLals Fisch definieren, bedeutet dies, dass die env var auf Fisch gesetzt wird. Viele Programme (z. B. vim, tmux) verwenden dies als Shell, die zum Ausführen von Shell-Befehlen verwendet wird, sofern Sie sie nicht explizit für die Verwendung einer anderen Shell (z. B. / bin / sh ) konfigurieren . Da diese Shell-Befehle mit hoher Wahrscheinlichkeit eine POSIX-Shell-Syntax enthalten, werden die Befehle von fish nicht korrekt ausgeführt. Dies bedeutet, dass Sie eher scheinbar zufällige, frustrierende Probleme haben.

Sie können Fische als Standard-Login-Shell festlegen. Ich mache das auf meinen beiden Hauptcomputern. Ich bin jedoch ein erfahrener UNIX-Benutzer, der sich der möglichen Probleme bewusst ist, die dies verursachen kann. Ich weiß auch, wie man sie umgehen kann. Zum Beispiel durch Hinzufügen set shell=/bin/shzu meiner Vimrc-Konfigurationsdatei. Wenn Sie unerfahren sind oder sich nicht mit der zusätzlichen Konfiguration befassen möchten, die erforderlich ist, sollten Sie Ihre Login-Shell auf bash oder eine andere POSIX-Shell setzen. Starten Sie dann im interaktiven Modus Fische aus dieser Schale. Dies ist auch sicherer, da Sie Ihre Fischkonfiguration wahrscheinlich auf eine Weise vermasseln, die es unmöglich macht, eine interaktive Fischsitzung zu starten. Wenn Sie Fisch zu Ihrer Standard-Login-Shell gemacht haben, können Sie sich nicht anmelden.

Fazit: Wenn Sie ein unerfahrener UNIX-CLI-Benutzer sind oder wenn Sie ein neuer Benutzer sind, setzen Sie ihn nicht als Standardshell ein. Wenn Sie ein erfahrener UNIX-CLI-Benutzer sind und seit einigen Wochen Fisch verwenden und sich sicher sind, dass Sie ihn richtig konfigurieren können, können Sie ihn gerne als Standard-Shell definieren.

Die Frage bezieht sich nicht so sehr auf "Ihre Standard-Shell", sondern auf "Standard-Shell". Wahrscheinlich sind diese Unterscheidung und die Wichtigkeit des Root-Kontos Gründe, aus denen die Frage überhaupt erst entstanden ist. Ihre Antwort scheint diesen Aspekt zu ignorieren, Sie erwähnen root überhaupt nicht. Bedeutet das, dass Ihre Antwort auch für Nicht-Root- und Root-Konten gilt? und sehen Sie nicht die Notwendigkeit, sie in dieser Angelegenheit anders zu behandeln? Kamil Maciorowski vor 6 Jahren 1
Nein, ich glaube nicht, dass es einen Grund gibt, Root- und Nicht-Root-Accounts in dieser Frage unterschiedlich zu behandeln. Aus diesem Grund habe ich meine Antwort nicht in Bezug auf das Root-Konto angegeben. Die Wahrscheinlichkeit, dass Probleme auftreten, ist für ein Konto ohne Rootberechtigung höher, da Sie mit größerer Wahrscheinlichkeit Apps (z. B. eine IDE) ausführen, die von der Standard-Shell betroffen sind, die nicht POSIX-kompatibel ist. Kurtis Rader vor 6 Jahren 0