我有一个别名,可以将一些参数传递给我经常使用的工具。有时我自己跑,有时在sudo下跑。不幸的是,当然,sudo无法识别别名。
有没有人暗示如何通过别名?
在这种情况下,调试时我有很多perl选项:
alias pd='perl -Ilib -I/home/myuser/lib -d'
有时,我必须以root用户身份调试工具,因此,不要运行:
pd ./mytool --some params
我需要在sudo下运行它。我尝试了很多方法:
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'"
我希望有一种简洁的好方法来确保我当前的pd别名得到充分使用(以防以后需要调整),尽管我的某些尝试根本不够简洁。我的最后一招是将其放入shell脚本中,并将其放置在sudo能够找到的地方。但是有时别名很方便,所以这是不得已的方法。
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.