Používám Ubuntu 10.04 a používám upstart
pro správu démonů. Moje podniková aplikace je spuštěna jako démon a musí být spuštěna jako root kvůli různým oprávněním. Např.:
sudo start my-application-long-ID
sudo stop my-application-long-ID
etc
Rád bych zavedl alias
zkrátit tyto příkazy jako:
alias startapp='sudo start my-application-long-ID'
a spusťte jej jako startapp
a to funguje, ale raději bych neměl sudo v aliasu.
alias startapp='start my-application-long-ID'
ne při spuštění pomocí sudo startapp
, vrací sudo: startapp: command not found
.
Nicméně, když jsem přidal alias:
alias sudo='sudo '
sudo startapp
nyní funguje, ale stále mě zajímá, proč sudo ignoruje aliasy.
Přijatá odpověď:
Níže uvedené informace vidím odtud.
Při použití sudo použijte rozšíření aliasů (jinak sudo vaše aliasy ignoruje)
alias sudo='sudo '
Důvod, proč to nefunguje, je vysvětlen zde.
Bash kontroluje pouze první slovo příkazu pro alias, jakákoli slova
po něm se nekontrolují. To znamená, že v příkazu jako sudo ll je pouze
první slovo (sudo) zkontrolováno bashem na alias, ll je ignorováno.
Můžeme říct bash, aby zkontroloval další slovo za aliasem (tj. sudo)
přidáním mezery na konec hodnoty aliasu.