为什么某些用户功能无法被使用 sudo 的 bash 识别?

为什么某些用户功能无法被使用 sudo 的 bash 识别?

初始条件 : 我已经定义了一个函数并将其导出:

myfunction () { echo OK ; }
export -f myfunction

我有一个简单的 bash 文件:test.sh

#!/bin/bash
myfunction

使用当前用户测试 OK: 如果我运行:

bash test.sh

有用 :)

不适用于 sudo : 但是如果我在 sudo 中运行:

sudo bash test.sh

我有错误:

test.sh: ligne2: myfunction : commande introuvable

意思是

test.sh: line2: myfunction : command not found

问题

为什么我的函数在 sudo 中不起作用?它如何在 sudo 中起作用?

非常感谢 :)

答案1

出于安全原因,sudo在运行其子进程之前丢弃 shell 函数和大多数环境变量。

您需要将 的定义包含myfunction在 中test.sh

相关内容