¿Cómo uso sudo con alias en zsh?

¿Cómo uso sudo con alias en zsh?

Digamos que tengo estos dos en mi .zshrc:

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

boot27da boot27: command not found. Si cambio el alias a 'nocorrect sudo 'o simplemente 'sudo ', funciona, pero luego otras cosas como mkdirdar nocorrect: command not found.

Respuesta1

Solo para aclarar, ejecuta sudo boot27y obtiene boot27: command not foundporque, como sudoes un alias, bash deja de buscar alias y no los reconoce boot27como tal. Como se discutioaquí, una forma de solucionar esto es agregar un espacio al final de la definición del alias.

Agregar el espacio permite que bash lo reconozca, boot27pero el problema ahora es que su cuenta raíz no está configurada para usar zsh, por lo que sudoinicia un shell bash. nocorrectes una zshcosa, bashno tiene idea de qué es y por eso se queja.

La forma más sencilla de solucionar este problema sería configurar el shell de root en /bin/zsh:

sudo chsh

Luego configura tu alias con el espacio:

alias sudo='nocorrect sudo '

Sin embargo, tu boot27alias tiene otro problema. Supongo que lo ejecuta como sudo boot27, el shell leerá el alias y lo expandirá a:

sudo grub-reboot 4 && reboot

Por lo tanto, se ejecutará grub-rebootcomo root pero rebootcomo usuario normal. Lo que quieres es cambiar tu alias a

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

y ejecutarlo como sudo boot27, o cambiar su alias a

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

y ejecutarlo sin sudo, solo boot27.

información relacionada