Всякий раз, когда я запускаю sudo su
свою обычную систему zsh
(которая использует фреймворк oh-my-zsh ), я вынужден использовать старую оболочку Bourne ( sh
) по умолчанию (очевидно, это стандартное поведение в большинстве * nix-подобных систем). Если я бегу zsh
изнутри sh
после запуска sudo su
, я получаю оболочку Z, но без улучшений из oh-my-zsh.
Есть ли способ изменить sudo su
запуск оболочки на zsh
? Если да, возможно ли использовать этот экземпляр zsh
запуска oh-my-zsh
?
Я использую OS X 10.8.4.
На этой
su
странице есть два способа сделать это.Первый способ - просто использовать флаг
-s
or--shell
(при условии, что вы используете ОС на базе * NIX с версиейsu
, поддерживающей этот аргумент), после чего следует путь к выбранной вами оболочке. Если пропущенная оболочка не может быть найдена,su
возвращается к следующему методу и, если он не работает, попытается вызвать/bin/sh
.Например, вы можете принудительно
su
запуститьzsh
(при условии, что он существует в/bin/zsh
) как:Второй способ - изменить оболочку по умолчанию, указанную для
root
пользователя ( будьте осторожны! ). Это можно сделать, отредактировав файл/etc/passwd
и изменив оболочку, указанную дляroot
пользователя. Чтобы увидеть, какая оболочка указана по умолчанию, вы можете выполнить следующую команду (при условии, что суперпользователь - root):Команда должна вывести что-то вроде
root:x:0:0:root:/root:/bin/bash
. Вы можете просто изменить/bin/bash
(или то, что установлено в вашей системе), чтобы указатьzsh
вместо этого.источник
sudo su -s /bin/zsh
(или использование--shell
) возвращаетsu: illegal option -- s
. Я на OS X 10.8.4; OS X принимает другую команду?cat /etc/shells
? Технически будут запускаться только те оболочки, которые разрешены в этом файле, хотя наsu
man-странице сказано, что это не должно иметь значения, еслиsu
вызывается root: Scat /etc/shells
возвращается/bin/zsh
в качестве приемлемой оболочки.Более чистый способ защитить вашу систему в случае взрыва вашей пользовательской оболочки - создать .profile в домашнем каталоге root с /:
Просто измените путь к желаемой оболочке вместо bash.
источник
Может быть легко сделано с
chpass
:источник