我一直在研究一个脚本,该脚本可以自动为 Raspberry Pi 开发设置开发环境(工作的逐步详细信息是这里)。该脚本在那篇文章中链接,但为了方便你可以找到它这里还。现在,当运行此脚本时,安装并设置环境不会出现错误,但由于默认情况下 sudo 的超时值,您必须多次输入 sudo 密码。因此,我开始尝试删除所有 sudo 行并在命令行中通过 sudo 运行整个脚本,如下所示:
kemra102@ubuntuvm:~$ sudo ./pi_dev_env_install.sh
这正如预期的那样工作得很好,并且到目前为止已经完成了大部分工作:
./pi_dev_env_install: 68: ./pi_dev_env_install.sh: Syntax error: "(" unexpected
现在,当不使用 sudo 运行整个脚本时,此行以前可以正常工作。据我所知,以 sudo 身份运行的这条线不会阻止它工作,有人有什么想法吗?
答案1
答案2
对我来说,开始脚本是:
bash ./< script file >
工作正常。
答案3
如果 shebang 不在第一行,则无论 root 用户的 shell、变量SHELL
或-s
标志如何,都不会尊重它。您可以通过一个简单的示例轻松确认这一点:
#
#!/bin/bash
offset=(`ls`)
echo $offset
使用 sudo 运行此脚本将在最新版本的 Ubuntu 和 Debian 中引发语法错误。
您有两种选择来确保脚本被解释bash
:
将 shebang 移至第一行
sudo
像这样运行:sudo bash ./pi_dev_env_install.sh
答案4
在脚本文件中尝试 dos2unix。有时,源代码中存在一些隐藏字符。
命令:
dos2unix script_file.sh script_file.sh