LINUX.ORG.RU

ZSH alias with sudo

 , ,


0

2

Перелез на zsh с его плюшками на основном пользователе. Цель - запускать большую последовательность команд, требующих права суперпользователя, используя alias. Сделал chsh -s /bin/zsh root. Выполнил alias asd='mycommands' под пользователем и рутом. Под рутом делаю asd - команды выполняются. Под пользователем делаю asd - команды выполняются, но на каждую вылезает окошко с просьбой ввести пароль рута, что очень напрягает. Делаю sudo asd, вижу: sudo: asd: command not found.
Как правильно сделать?

★★★★★

Как правильно сделать?

alias asd="sudo mycommands"

Либо можно запускать от рута zsh, чтоб его алиасы инициализировались: sudo zsh -c asd.

Либо обойтись без алиасов, а положить свой asd в /usr/local/bin. И наверное так будет даже правильнее, потому что тогда тебе менять его надо будет в одном месте, если захочется, а не два между собой руками синхронизировать.

Psych218 ★★★★★
()
Ответ на: комментарий от sudopacman

Every eligible word in the shell input is checked to see if there is an alias defined for it. If so, it is replaced by the text of the alias if it is in command position (if it could be the first word of a simple command), or if the alias is global.

в итоге

sudo asd 

развернётся в

sudo mycommands

собственно, можно проверить через set -x, что оно разворачивается именно нужным образом

lazyklimm ★★★★★
()
Последнее исправление: lazyklimm (всего исправлений: 3)
Ответ на: комментарий от sudopacman

Если я всё правильно понял, то сделай так

Да, всё правильно. Спасибо, оптимальное решение, работает как надо, пароль спрашивает 1 раз, писать sudo - лишние буковки не надо, по окончанию команд остаётся под пользователем, который был.

fehhner ★★★★★
() автор топика

У oh-my-zsh есть плагин sudo, с которым двойное нажатие на Esc добавляет sudo перед последней введенной командой. И не нужно никаких выкрутасов с alias.

iVS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.