【问题标题】:Script doesn't work when executed with sudo使用 sudo 执行时脚本不起作用
【发布时间】:2026-02-07 15:15:01
【问题描述】:

Linux bash 脚本:

函数打印() { 回声 $1 } 打印“确定”

此脚本运行成功,直接执行时,使用 sudo 运行时报错:

alex@alex-linux:~/tmp$ ./sample-script 好的 alex@alex-linux:~/tmp$ sudo ./sample-script [sudo] 亚历克斯的密码: ./sample-script: 1: 语法错误:"(" 意外

为什么?

【问题讨论】:

    标签: linux bash scripting sudo


    【解决方案1】:

    你有吗

    #!/bin/bash
    

    作为脚本的第一行?这可能需要

    【讨论】:

      【解决方案2】:

      也许 root 有一个不支持该语法的不同默认 shell。

      【讨论】:

      • 这可能是正确的答案。如果 root 的 shell 是破折号,function 关键字将无效。对于任何其他 POSIX shell 来说都是如此。 bash shebang 起作用的事实有力地表明这正是问题所在。