Sempre que corro sudo su
do meu normal zsh
(que usa a estrutura oh-my-zsh ), sou forçado a usar o antigo shell Bourne ( sh
) por padrão (obviamente; esse é o comportamento padrão na maioria dos sistemas * nix). Se eu correr zsh
de dentro sh
depois de executar sudo su
, recebo o shell Z, mas sem as melhorias do oh-my-zsh.
Existe alguma maneira de alterar o sudo su
lançamento do shell zsh
? Em caso afirmativo, é possível também ter essa instância de zsh
inicialização usando oh-my-zsh
?
Estou usando o OS X 10.8.4.
Na página de
su
manual, há duas maneiras de conseguir isso.O primeiro método é simplesmente usar o sinalizador
-s
ou--shell
(supondo que você esteja usando um SO baseado em * NIX com uma versãosu
que suporte esse argumento), seguido pelo caminho para o shell de sua escolha. Se o shell passado não puder ser encontrado, elesu
reverte para o método a seguir e, na sua falta, tentará chamar/bin/sh
.Por exemplo, você pode forçar o
su
lançamentozsh
(supondo que exista em/bin/zsh
) como:O segundo método é modificar o shell padrão especificado para o
root
usuário ( cuidado! ). Isso pode ser feito editando o arquivo/etc/passwd
e alterando o shell especificado para oroot
usuário. Para ver qual shell é especificado por padrão, você pode executar o seguinte comando (assumindo que o superusuário seja root):O comando deve saída algo como
root:x:0:0:root:/root:/bin/bash
. Você pode simplesmente mudar o/bin/bash
(ou o que estiver definido no seu sistema) para apontarzsh
.fonte
sudo su -s /bin/zsh
(ou uso--shell
) retornasu: illegal option -- s
. Estou no OS X 10.8.4; o OS X usa um comando diferente?cat /etc/shells
? Tecnicamente apenas conchas permitidos nesse arquivo será lançado, embora asu
manpage diz que isso não deve importa sesu
é chamada pelo root: Scat /etc/shells
retorna/bin/zsh
como um shell aceitável.Uma maneira mais limpa que também protegerá seu sistema caso seu shell personalizado seja explodido é criar um .profile no diretório inicial do root com:
Apenas mude o caminho para o shell que você deseja, em vez do bash.
fonte
Pode ser feito facilmente com
chpass
:fonte