Estoy ejecutando Ubuntu 10.04 y uso upstart
para la gestión de demonios. Mi aplicación empresarial se ejecuta como un demonio y debe ejecutarse como root debido a varios privilegios. Por ejemplo:
sudo start my-application-long-ID
sudo stop my-application-long-ID
etc
Me gustaría presentar un alias
para abreviar estos comandos como algo como:
alias startapp='sudo start my-application-long-ID'
y ejecútelo como startapp
y eso funciona, pero preferiría no tener sudo en el alias.
alias startapp='start my-application-long-ID'
no cuando se ejecuta usando sudo startapp
, devolviendo sudo: startapp: command not found
.
Sin embargo, cuando agregué el alias:
alias sudo='sudo '
sudo startapp
ahora funciona, pero todavía tengo curiosidad por qué sudo ignora los alias.
Respuesta aceptada:
Veo la siguiente información desde aquí.
Cuando use sudo, use la expansión de alias (de lo contrario, sudo ignora sus alias)
alias sudo='sudo '
La razón por la que no funciona se explica aquí.
Bash solo verifica la primera palabra de un comando para un alias, cualquier palabra
después de eso no se verifica. Eso significa que en un comando como sudo ll, solo
la primera palabra (sudo) es verificada por bash para un alias, ll es ignorada.
Podemos decirle a bash que verifique la siguiente palabra después del alias (es decir sudo)
agregando un espacio al final del valor del alias.