我有一个别名,它将一些参数传递给我经常使用的工具.有时我像自己一样跑,有时在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能够找到的地方.但别名有时太方便了,所以这是最后的手段.
在Archlinux-Wiki中可以找到一个非常优雅的解决方案:
原文链接:https://www.f2er.com/bash/386128.htmlalias sudo='sudo ' # whitespace ---^
用于将所有别名传递给sudo.
资料来源:http://wiki.archlinux.org/index.php/Sudo#Passing_aliases