Immer wenn ich sudo su
von meinem normalen System aus laufe zsh
(das das oh-my-zsh- Framework verwendet), muss ich sh
standardmäßig die alte Bourne-Shell ( ) verwenden (dies ist offensichtlich das Standardverhalten auf den meisten * nix-ähnlichen Systemen). Wenn ich nach dem Laufen zsh
von innen sh
renne sudo su
, bekomme ich die Z-Shell, aber ohne die Verbesserungen von oh-my-zsh.
Gibt es eine Möglichkeit, die Shell- sudo su
Starts zu ändern zsh
? Wenn ja, ist es möglich, diese Startinstanz auch zsh
mit zu verwenden oh-my-zsh
?
Ich verwende OS X 10.8.4.
Auf der
su
Manpage gibt es zwei Möglichkeiten, dies zu erreichen.Die erste Methode besteht darin, einfach das Flag
-s
oder zu--shell
verwenden (vorausgesetzt, Sie verwenden ein * NIX-basiertes Betriebssystem mit einer Versionsu
, die dieses Argument unterstützt), gefolgt vom Pfad zur Shell Ihrer Wahl. Wenn die übergebene Shell nicht gefunden werden kann, wirdsu
auf die folgende Methode zurückgegriffen. Andernfalls wird versucht, sie aufzurufen/bin/sh
.Beispielsweise können Sie das
su
Starten erzwingenzsh
(vorausgesetzt, es existiert in/bin/zsh
) wie folgt :Die zweite Methode besteht darin, die für den
root
Benutzer angegebene Standard-Shell zu ändern ( Vorsicht! ). Dies kann durch Bearbeiten der Datei/etc/passwd
und Ändern der für denroot
Benutzer angegebenen Shell erfolgen . Um zu sehen, welche Shell standardmäßig angegeben ist, können Sie den folgenden Befehl ausführen (vorausgesetzt, der Superuser ist root):Der Befehl sollte so etwas wie ausgeben
root:x:0:0:root:/root:/bin/bash
. Sie können einfach die/bin/bash
(oder was auch immer in Ihrem System eingestellt ist) ändern , umzsh
stattdessen auf zu zeigen.quelle
sudo su -s /bin/zsh
(oder Verwenden--shell
) von gibt zurücksu: illegal option -- s
. Ich bin auf OS X 10.8.4; Nimmt OS X einen anderen Befehl an?cat /etc/shells
? Technisch gesehen werden nur Shells gestartet, die in dieser Datei erlaubt sind, obwohl diesu
Manpage sagt, dass dies keine Rolle spielen sollte, wennsu
sie von root aufgerufen wird: Scat /etc/shells
Gibt/bin/zsh
als akzeptable Shell zurück.Eine sauberere Methode, die auch Ihr System schützt, falls Ihre benutzerdefinierte Shell in die Luft gesprengt wird, besteht darin, ein .profile im Home-Verzeichnis von root zu erstellen mit:
Ändern Sie einfach den Pfad zu der gewünschten Shell, anstatt zu schlagen.
quelle
Kann leicht gemacht werden mit
chpass
:quelle