Ein Freund von mir (der ein erfahrener Unix / Linux-Benutzer ist) hat mir einmal gesagt, dass das Setzen der root-Shell auf etwas anderes als sh (dh bash oder zsh) Probleme verursachen könnte, da einige Skripte annehmen könnten, dass die Shell sh ist und etwas Seltsames tun .
Ich denke jedoch, dass Ubuntu die Standard-Root-Shell auf bash gesetzt hat und Gentoo auch bash verwendet. Kann jemand den Mythos zunichte machen?
bash
. Ich habe im Einzelbenutzermodus gebootet, um das Problem zu beheben, aber es funktionierte nur, weil/bin/sh
noch eine Verknüpfung zuFBSD
's Fork' bestandbourne
und nichtbash
.zsh
und irgendwie/usr
beschädigt bin werde ich problem haben? aber mein system hat/bin/sh
hinweis auf/bin/bash
und sichbash
selbst, warum wäre das nichtsh
betroffen?zsh
sollte nicht in sein,/usr/bin/
wenn es falsch installiert wurde. Alle Schalen sollten in sein/bin
/bin
, behält aber einige Dateien bei/usr/share
. Außerdem habe ich klar angegeben, dass das Problem beim Anmelden während des Startvorgangs auftritt (wenn ein Dienst ausfällt).Sollte kein Problem sein.
Shell-Skriptdateien kodieren explizit, mit welcher Shell sie ausgeführt werden. Es wird in der ersten Zeile codiert oder andere Programme oder Skripte führen eine bestimmte Shell aus und geben das Shell-Skript als Argument an.
Das einzige Programm, das ich mir vorstellen kann, das die Shell-Informationen des Benutzerkontos verwendet (neben dem Anmeldevorgang), ist procmail. Wirklich lustig, wenn Ihr Benutzer auf dem Mailserver als shell / bin / false festgelegt hat ... Aber Sie führen procmail normalerweise nicht als root aus.
Ein anderer Kandidat wären die Linien in der Wurzelkrone. Ich weiß nicht, wie Crond vorgeht, welche Shell verwendet werden soll.
quelle
Für die Bourne-Shell geschriebene Skripte werden die meiste Zeit problemlos gegen BASH, ZSH oder $ foo ausgeführt.
Auf vielen Linux-Systemen ist kein Original-sh installiert, sondern oft ein Symlink gegen / bin / bash.
Wenn einige Skripte lediglich davon ausgehen, dass die Shell explizit sh ist, sollten sie neu geschrieben werden. Über den Shebang-Mechanismus können Sie auswählen, welchen Interpreter Ihr Skript benötigt. Wenn es das sh ist, sollte das Skript
#!/bin/sh
als erste Zeile enthalten sein.Ihre Standard-Shell-Einstellung sollte in diesem Zusammenhang nicht relevant sein.
quelle
Ich glaube nicht, dass das Ändern der root-Shell Probleme bereiten würde. Ich erinnere mich an einige Unices (vielleicht einige BSD-Varianten?), Die tcsh als Standard-Shell für root haben.
Root-Logins sind sowieso selten. Normalerweise würden Sie sich in Ihr eigenes Konto einloggen und dann su oder sudo als root anmelden.
Entscheidend ist, dass die Shell von root so wenig Abhängigkeiten wie möglich aufweist, damit sie in einem Systemreparaturkontext verwendet werden kann. Zum Beispiel ist es eine gute Idee, eine statisch verknüpfte Root-Shell zu haben. Einige Distributionen enthalten eine statisch verknüpfte Version von bash oder zsh oder sash (eine Shell mit vielen integrierten Standarddienstprogrammen). Dies ist jedoch nicht so wichtig, wenn Ihr System problemlos von einer Rettungs-CD oder einem USB-Laufwerk gebootet werden kann.
quelle
Die Login-Shell eines Benutzers beeinflusst den Bootvorgang nicht. Sie können diese Shell nach Belieben einstellen. Nicht alle Systeme haben Bash und sie funktionieren einwandfrei. Auch wenn es
/usr/bin/zsh
falsch installiert wurde, sollten sich alle System-Shells in befinden/bin
. Sie sollten jedoch nicht ändern/bin/sh
, um auf etwas anderes als den Standard zu verweisen (es sei denn, Sie wissen, was Sie tun), da viele Skripte#!/bin/sh
normalerweise auf bash#!/bin/bash
verweisen arbeiten anzsh
oderdash
.quelle
bash
undzsh
sind in/bin
Ich habe Bash als Standard-Shell für root. Ich habe zsh für einige Zeit benutzt, bin dann aber wieder zur Bash zurückgekehrt . Welche Shell Sie verwenden, spielt keine Rolle.
Dies ist nur dann ein Problem, wenn mehr als eine Person Root-Zugriff hat. In diesem Fall können Sie einen "gemeinsamen Nenner" auswählen, der normalerweise bash ist, da dies die am häufigsten verwendete Shell ist.
quelle
In Bezug auf Solaris / Illumos die Solaris - Root - Shell Mini-FAQ Erwähnung
Wenn Sie also Solaris oder illumos verwenden, ist es in Ordnung, andere Shells als zu verwenden
sh
.quelle