shell – 如何通过sudo传递别名

前端之家收集整理的这篇文章主要介绍了shell – 如何通过sudo传递别名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个别名,它将一些参数传递给我经常使用的工具.有时我像自己一样跑,有时在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能够找到的地方.但别名有时太方便了,所以这是最后的手段.

@H_502_18@
在Archlinux-Wiki中可以找到一个非常优雅的解决方案:
alias sudo='sudo '
# whitespace ---^

用于将所有别名传递给sudo.

资料来源:http://wiki.archlinux.org/index.php/Sudo#Passing_aliases

猜你在找的Bash相关文章