我有一个巨大的别名文件,由~/.bashrc
or提供~/.zshrc
,其中包含简单的别名和更多用于更复杂的东西的函数:
# example aliases
alias "sudo=sudo "
alias "testalias=echo 'Aliases work as expected'"
# example function
testfunction(){
echo "Function $1 works as expected"
}
如果我在有或没有的情况下运行这些命令,就会发生这种情况sudo
:
> testalias
Aliases work as expected
> testfunction "test"
Function test works as expected
> sudo testalias
Aliases work as expected
> sudo testfunction "test"
sudo: testfunction: command not found
我也没看到有什么区别
export -f testfunction && sudo -E testfunction "test"
alias "testfunction-alias=testfunction" && sudo -E testfunction-alias "test"
如何sudo
像我已经使用别名那样调用函数?
可能不需要为它们中的每一个导出/创建别名,因为它们数量众多。
答案1
sudo
运行命令,它不能运行别名或函数。别名是 shell 的一项功能。因此,为了运行别名,您首先需要启动 root shell。