我的服务器运行的是 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
。