如何从 sudo 调用多个 shell 函数?

如何从 sudo 调用多个 shell 函数?

我有一个巨大的别名文件,由~/.bashrcor提供~/.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。

相关内容