加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 如何通过sudo传递别名

发布时间:2020-12-15 18:43:20 所属栏目:安全 来源:网络整理
导读:我有一个别名,它将一些参数传递给我经常使用的工具.有时我像自己一样跑,有时在sudo下.不幸的是,当然,sudo不承认别名. 有没有人提示如何通过别名? 在这种情况下,我在调试时有一堆perl的选项: alias pd='perl -Ilib -I/home/myuser/lib -d' 有时,我必须以roo
我有一个别名,它将一些参数传递给我经常使用的工具.有时我像自己一样跑,有时在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读