Как использовать sudo с псевдонимом в zsh?

Как использовать sudo с псевдонимом в zsh?

Допустим, у меня есть эти два в моем .zshrc:

alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'

boot27дает boot27: command not found. Если я изменю псевдоним на 'nocorrect sudo 'или просто 'sudo ', это сработает, но затем другие вещи, такие как mkdirgive nocorrect: command not found.

решение1

Просто для ясности, вы запускаете sudo boot27и получаете, boot27: command not foundпотому что, поскольку sudoэто псевдоним, bash прекращает сканирование на наличие псевдонимов и не распознает их boot27как один. Как обсуждалосьздесь, одним из способов решения этой проблемы является добавление пробела в конце определения псевдонима.

Добавление пробела позволяет bash распознавать его boot27, но проблема теперь в том, что ваша учетная запись root не настроена на использование zsh, поэтому sudoвместо этого запускается оболочка bash. nocorrectэто zshштука, bashпонятия не имеющая, что это такое, поэтому и жалуется.

Самый простой способ исправить это — установить для root-оболочки следующее /bin/zsh:

sudo chsh

Затем задайте свой псевдоним с помощью пробела:

alias sudo='nocorrect sudo '

Однако у вашего boot27псевдонима есть другая проблема. Я предполагаю, что вы запускаете его как sudo boot27, оболочка прочитает псевдоним и расширит его до:

sudo grub-reboot 4 && reboot

Итак, он будет работать grub-rebootкак root, но он будет работать rebootкак обычный пользователь. Что вам нужно, так это либо изменить свой псевдоним на

alias boot27='grub-reboot 4 && sudo reboot'

и запустить его как sudo boot27, или изменить свой псевдоним на

alias boot27='sudo grub-reboot 4 && sudo reboot'

и запустить его без sudo, просто boot27.

Связанный контент