首页 新闻 会员 周边

shell 脚本执行报错:"#!/bin/bash: not found"

0
悬赏园豆:30 [已解决问题] 解决于 2022-08-18 12:59

shell 脚本第1行写的是 #!/bin/bash,执行时却报错 #!/bin/bash: not found ,很是奇怪,请问如何解决?

./deploy-development.sh
./deploy-development.sh: 1: ./deploy-development.sh: #!/bin/bash: not found
dudu的主页 dudu | 高人七级 | 园豆:30994
提问于:2022-08-18 12:43
< >
分享
最佳答案
0

是文件编码引起的,出问题的脚本的文件编码是 UTF-8

$ file deploy-development.sh                                                                                                                   
deploy-development.sh: Bourne-Again shell script, UTF-8 Unicode (with BOM) text executable

没这个问题的脚本的文件编码是 ASCII

Bourne-Again shell script, ASCII text executable

将文件编码从 UTF-8 改为 ASCII 问题就解决了。

dudu | 高人七级 |园豆:30994 | 2022-08-18 12:59

file -i 命令可以查看文件编码

$ file  -i deploy-development.sh                                                                                                                      
deploy-development.sh: text/x-shellscript; charset=utf-8

通过 iconv 命令可以将文件编码从 utf-8 转换为 ascii

iconv -f utf-8 -t ascii//translit deploy-development.sh -o deploy-development.sh
dudu | 园豆:30994 (高人七级) | 2023-01-13 11:51
其他回答(1)
0

dudu的回复给了我灵感,我试了不是编码问题,而是行尾序列问题。因为是用的windows编写shell,行尾序列是CRLF,改为LF重新保存就ok了

口袋弟 | 园豆:202 (菜鸟二级) | 2022-09-08 14:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册