Ho un alias che passa alcuni parametri a uno strumento che uso spesso. A volte corro come me stesso, a volte sotto sudo. Sfortunatamente, ovviamente, sudo non riconosce l'alias.
Qualcuno ha un suggerimento su come passare l'alias?
In questo caso, ho un sacco di opzioni per Perl durante il debug:
alias pd='perl -Ilib -I/home/myuser/lib -d'
A volte, devo eseguire il debug dei miei strumenti come root, quindi, invece di eseguire:
pd ./mytool --some params
Devo eseguirlo su sudo. Ho provato molti modi:
sudo eval $(alias pd)\; pd ./mytool --some params
sudo $(alias pd)\; pd ./mytool --some params
sudo bash -c "$(alias pd)\; pd ./mytool --some params"
sudo bash -c "$(alias pd); pd ./mytool --some params"
sudo bash -c eval\ "$(alias pd)\; pd ./mytool --some params"
sudo bash -c eval\ "'$(alias pd)\; pd ./mytool --some params'"
Speravo in un modo simpatico e conciso per garantire che il mio attuale pd alias fosse pienamente utilizzato (nel caso dovessi modificarlo in seguito), anche se alcuni dei miei tentativi non erano affatto concisi. La mia ultima risorsa è metterlo in uno script di shell e metterlo da qualche parte che sudo sarà in grado di trovare. Ma a volte gli alias sono davvero utili, quindi è l'ultima risorsa.
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.