微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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能够找到的地方.但别名有时太方便了,所以这是最后的手段.

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐