Digamos que tengo estos dos en mi .zshrc
:
alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'
boot27
da boot27: command not found
. Si cambio el alias a 'nocorrect sudo '
o simplemente 'sudo '
, funciona, pero luego otras cosas como mkdir
dar nocorrect: command not found
.
Respuesta1
Solo para aclarar, ejecuta sudo boot27
y obtiene boot27: command not found
porque, como sudo
es un alias, bash deja de buscar alias y no los reconoce boot27
como 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, boot27
pero el problema ahora es que su cuenta raíz no está configurada para usar zsh, por lo que sudo
inicia un shell bash. nocorrect
es una zsh
cosa, bash
no 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 boot27
alias 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-reboot
como root pero reboot
como 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
.