bash:build/envsetup.sh:第 1 行:意外标记“$'{\r''”附近出现语法错误

bash:build/envsetup.sh:第 1 行:意外标记“$'{\r''”附近出现语法错误

我的服务器运行的是 Ubuntu 18.04 LTS,我用它来托管我的个人内容、流媒体、机器人和进行 Android 构建。一个月前,我在执行脚本时看到了一些错误,envsetup.sh该脚本是准备环境以开始构建的地方。链接到脚本。这是输出:

miguel@mike-machine:/home/builds/sources/PixysOS$ . build/envsetup.sh 
bash: build/envsetup.sh: line 1: syntax error near unexpected token `$'{\r''
'ash: build/envsetup.sh: line 1: `function hmm() {

我尝试在另一台机器(Manjaro 18 KDE)上执行它,没有遇到问题,那是我暂时构建的地方。我认为这是一个 bash 问题,但是我sudo apt-get install --reinstall bash,但我仍然得到同样的结果。

答案1

这几乎肯定是因为您使用 DOS 样式的 CRLF 行尾保存了脚本。

例如,给定一个最小脚本文件

$ cat bad.sh
function hmm() {
cat <<EOF
Run "m help" for help with the build system itself.
EOF
}

已使用 DOS 行尾保存,如下file命令所示

$ file bad.sh
bad.sh: ASCII text, with CRLF line terminators

然后

$ . ./bad.sh
bash: ./bad.sh: line 1: syntax error near unexpected token `$'{\r''
'ash: ./bad.sh: line 1: `function hmm() {

$ dos2unix bad.sh
dos2unix: converting file bad.sh to Unix format...
$ . ./bad.sh
$ hmm
Run "m help" for help with the build system itself.

您可以dos2unix在 Ubuntuuniverse存储库中找到该软件包 - 否则您可以使用sed删除\r字符或vi's set ff=unix

相关内容