Sto eseguendo Ubuntu 10.04 e utilizzo upstart
per la gestione dei demoni. La mia applicazione aziendale viene eseguita come demone e deve essere eseguita come root a causa di vari privilegi. Es.:
sudo start my-application-long-ID
sudo stop my-application-long-ID
etc
Vorrei introdurre un alias
per abbreviare questi comandi in qualcosa del tipo:
alias startapp='sudo start my-application-long-ID'
ed eseguilo come startapp
e funziona ma preferirei non avere sudo nell'alias.
alias startapp='start my-application-long-ID'
non funziona quando viene eseguito utilizzando sudo startapp
, restituendo sudo: startapp: command not found
.
Tuttavia, quando ho aggiunto l'alias:
alias sudo='sudo '
sudo startapp
ora funziona ma sono ancora curioso di sapere perché sudo ignori gli alias.
Risposta accettata:
Vedo le seguenti informazioni da qui.
Quando usi sudo, usa l'espansione alias (altrimenti sudo ignora i tuoi alias)
alias sudo='sudo '
Il motivo per cui non funziona è spiegato qui.
Bash controlla solo la prima parola di un comando per un alias, tutte le parole
successive non vengono controllate. Ciò significa che in un comando come sudo ll, solo
la prima parola (sudo) viene controllata da bash per un alias, ll viene ignorato.
Possiamo dire a bash di controllare la parola successiva dopo l'alias (cioè sudo)
aggiungendo uno spazio alla fine del valore dell'alias.