Cada vez que ejecuto sudo su
mi normal zsh
(que usa el marco oh-my-zsh ), me veo obligado a usar el viejo shell Bourne ( sh
) de forma predeterminada (obviamente; este es el comportamiento estándar en la mayoría de los sistemas * nix-like). Si corro zsh
desde adentro sh
después de correr sudo su
, obtengo el shell Z, pero sin las mejoras de oh-my-zsh.
¿Hay alguna forma de cambiar los sudo su
lanzamientos de shell zsh
? Si es así, ¿es posible tener también esa instancia de zsh
lanzamiento usando oh-my-zsh
?
Estoy usando OS X 10.8.4.
Desde la página de
su
manual, hay dos formas de lograr esto.El primer método es simplemente usar el indicador
-s
o--shell
(suponiendo que esté usando un sistema operativo basado en * NIX con una versiónsu
que admita este argumento), seguido de la ruta al shell de su elección. Si no se puede encontrar el shell pasado,su
vuelve al siguiente método y, en su defecto, intentará invocar/bin/sh
.Por ejemplo, puede forzar el
su
iniciozsh
(suponiendo que exista en/bin/zsh
) como:El segundo método es modificar el shell predeterminado especificado para el
root
usuario (¡ tenga cuidado! ). Esto se puede hacer editando el archivo/etc/passwd
y cambiando el shell especificado para elroot
usuario. Para ver qué shell se especifica de manera predeterminada, puede ejecutar el siguiente comando (suponiendo que el superusuario sea root):El comando debería mostrar algo como
root:x:0:0:root:/root:/bin/bash
. Simplemente puede cambiar el/bin/bash
(o lo que esté configurado en su sistema) para que apunte en suzsh
lugar.fuente
sudo su -s /bin/zsh
(o usar--shell
) retornossu: illegal option -- s
. Estoy en OS X 10.8.4; ¿OS X toma un comando diferente?cat /etc/shells
? Técnicamente, solo se lanzarán shells permitidos en ese archivo, aunque la página desu
manual dice que esto no debería importar sisu
se llama por root: Scat /etc/shells
regresa/bin/zsh
como un shell aceptable.Una forma más limpia que también protegerá su sistema en caso de que se explote su shell personalizado es crear un .profile en el directorio de inicio de la raíz con:
Simplemente cambie la ruta al shell que desea en lugar de bash.
fuente
Se puede hacer fácilmente con
chpass
:fuente