初始条件 : 我已经定义了一个函数并将其导出:
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
。