Eu tenho um alias que passa em alguns parâmetros para uma ferramenta que eu uso frequentemente. Às vezes eu corro como eu, às vezes no sudo. Infelizmente, é claro, o sudo não reconhece o apelido.
Alguém tem uma dica de como passar o alias?
Nesse caso, tenho várias opções para perl quando estou depurando:
alias pd='perl -Ilib -I/home/myuser/lib -d'
Às vezes, tenho que depurar minhas ferramentas como root, portanto, em vez de executar:
pd ./mytool --some params
Eu preciso executá-lo no sudo. Eu tentei de várias maneiras:
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'"
Eu esperava uma maneira agradável e concisa de garantir que meu alias de pd atual fosse totalmente usado (caso precise ajustá-lo mais tarde), embora algumas de minhas tentativas não fossem concisas. Meu último recurso é colocá-lo em um script shell e colocá-lo em algum lugar que o sudo possa encontrar. Mas, às vezes, aliases são muuuuito úteis, por isso é um último recurso.
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.