Mam alias, który przekazuje niektóre parametry do narzędzia, którego często używam. Czasami biegam jak ja, czasem pod sudo. Niestety, sudo nie rozpoznaje aliasu.
Czy ktoś ma podpowiedź, jak przekazać alias?
W tym przypadku mam kilka opcji dla Perla podczas debugowania:
alias pd='perl -Ilib -I/home/myuser/lib -d'
Czasami muszę debugować moje narzędzia jako root, więc zamiast uruchamiać:
pd ./mytool --some params
Muszę uruchomić to pod sudo. Próbowałem na wiele sposobów:
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'"
Miałem nadzieję na dobry, zwięzły sposób, aby upewnić się, że mój obecny alias pd został w pełni wykorzystany (na wypadek, gdy będę musiał go później poprawić), chociaż niektóre moje próby wcale nie były zwięzłe. Ostatnim rozwiązaniem jest umieszczenie go w skrypcie powłoki i umieszczenie go gdzieś, co sudo będzie w stanie znaleźć. Ale aliasy są czasem bardzo przydatne, więc jest to ostateczność.
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.