Como uso sudo com alias em zsh?

1

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 alterar o alias para 'nocorrect sudo ' ou apenas 'sudo ' , ele funciona, mas outras coisas como mkdir fornecem nocorrect: command not found .

    
por Mike Roll 09.06.2013 / 00:46

1 resposta

2

Só para esclarecer, você executa sudo boot27 e obtém boot27: command not found porque, como sudo é um alias, o bash interrompe a varredura de aliases e não reconhece boot27 como um. Como discutido aqui , uma maneira de lidar com isso é adicionar um espaço no final da definição do alias.

A adição do espaço permite que o bash reconheça boot27 , mas o problema agora é que sua conta raiz não está configurada para usar zsh, então sudo inicia um shell bash. nocorrect é uma coisa zsh , bash nã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 boot27 alias tem outro problema. Eu suponho que você o execute como sudo boot27 , o shell lerá o alias e expandirá para:

sudo grub-reboot 4 && reboot

Portanto, ele executará grub-reboot como root, mas executará reboot como um usuário normal. O que você quer é mudar seu alias para

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

e execute-o como sudo boot27 ou altere seu alias para

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

e execute-o sem sudo , apenas boot27 .

    
por 09.06.2013 / 05:22

Tags