Como uso o sudo com alias no zsh?

Como uso o sudo com alias no zsh?

Digamos que eu tenha esses dois no meu .zshrc:

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

boot27boot27: command not found. Se eu mudar o alias para 'nocorrect sudo 'ou apenas 'sudo ', funciona, mas outras coisas como mkdirgive nocorrect: command not found.

Responder1

Só para esclarecer, você executa sudo boot27e obtém boot27: command not foundporque, como sudoé um alias, o bash para de procurar por aliases e não o reconhece boot27como um. Conforme discutidoaqui, uma maneira de lidar com isso é adicionar um espaço no final da definição do alias.

Adicionar o espaço permite que o bash reconheça, boot27mas o problema agora é que sua conta root não está configurada para usar zsh, então sudoinicia um shell bash. nocorrecté uma zshcoisa, bashnão tem ideia do que é então reclama.

A maneira mais simples de corrigir isso seria definir o shell do root como /bin/zsh:

sudo chsh

Em seguida, defina seu alias com o espaço:

alias sudo='nocorrect sudo '

Seu boot27alias tem outro problema. Presumo que você o execute como sudo boot27, o shell lerá o alias e o expandirá para:

sudo grub-reboot 4 && reboot

Portanto, ele será executado grub-rebootcomo root, mas será executado rebootcomo um usuário normal. O que você deseja é alterar seu alias para

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

e execute-o como sudo boot27ou altere seu alias para

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

e executá-lo sem sudo, apenas boot27.

informação relacionada