Chaque fois que je cours sudo su
depuis mon normal zsh
(qui utilise le framework oh-my-zsh ), je suis obligé d'utiliser l'ancien shell Bourne ( sh
) par défaut (évidemment; c'est un comportement standard sur la plupart des systèmes * nix). Si je cours zsh
de l'intérieur sh
après avoir exécuté sudo su
, j'obtiens le shell Z, mais sans les améliorations de oh-my-zsh.
Existe-t-il un moyen de modifier les sudo su
lancements de shell en zsh
? Si oui, est-il possible d'avoir également cette instance de zsh
lancement en utilisant oh-my-zsh
?
J'utilise OS X 10.8.4.
À partir de la
su
page de manuel, vous pouvez procéder de deux manières.La première méthode consiste à simplement utiliser l' indicateur
-s
ou--shell
(en supposant que vous utilisez un système d'exploitation basé sur * NIX avec une versionsu
qui prend en charge cet argument), suivi du chemin d'accès au shell de votre choix. Si le shell passé est introuvable,su
revient à la méthode suivante et, à défaut, tentera de l'invoquer/bin/sh
.Par exemple, vous pouvez forcer
su
le lancementzsh
(en supposant qu'il existe en/bin/zsh
) en tant que:La deuxième méthode consiste à modifier le shell par défaut spécifié pour l'
root
utilisateur ( attention! ). Cela peut être fait en modifiant le fichier/etc/passwd
et en changeant le shell spécifié pour l'root
utilisateur. Pour voir quel shell est spécifié par défaut, vous pouvez exécuter la commande suivante (en supposant que le superutilisateur est root):La commande devrait produire quelque chose comme
root:x:0:0:root:/root:/bin/bash
. Vous pouvez simplement changer le/bin/bash
(ou tout ce qui est défini dans votre système) pour pointer à lazsh
place.la source
sudo su -s /bin/zsh
(ou utiliser--shell
) des retourssu: illegal option -- s
. Je suis sur OS X 10.8.4; OS X prend-il une commande différente?cat /etc/shells
? Techniquement, seuls les shells autorisés dans ce fichier seront lancés, bien que lasu
page de manuel indique que cela ne devrait pas avoir d'importance si ellesu
est appelée par root: Scat /etc/shells
renvoie/bin/zsh
comme un shell acceptable.Une manière plus propre qui protégera également votre système au cas où votre shell personnalisé serait fait exploser est de créer un .profile dans le répertoire personnel de root avec:
Changez simplement le chemin vers le shell que vous voulez au lieu de bash.
la source
Peut se faire facilement avec
chpass
:la source