Digamos que eu tenha esses dois no meu .zshrc
:
alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'
boot27
dá boot27: command not found
. Se eu mudar o alias para 'nocorrect sudo '
ou apenas 'sudo '
, funciona, mas outras coisas como mkdir
give nocorrect: command not found
.
Responder1
Só para esclarecer, você executa sudo boot27
e obtém boot27: command not found
porque, como sudo
é um alias, o bash para de procurar por aliases e não o reconhece boot27
como 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, boot27
mas o problema agora é que sua conta root não está configurada para usar zsh, então sudo
inicia um shell bash. nocorrect
é uma zsh
coisa, 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. 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-reboot
como root, mas será executado reboot
como um usuário normal. O que você deseja é alterar 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 executá-lo sem sudo
, apenas boot27
.