You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Termux执行test.sh脚本出现文件不存在错误求助

问题:Termux中执行bash脚本出现shebang错误但内容正常输出

问题详情

脚本test.sh内容:

#!/data/data/com.termux/files/usr/bin/env bash
echo "Hello World"

已执行termux-fix-shebang修复shebang,且安装了最新版Termux-exec,但执行bash test.sh时仍报错:

line 1: #!/data/data/com.termux/files/usr/bin/env: No such file or directory

不过脚本的Hello World内容可正常输出。补充命令输出:

~/.../journal/nginx_config $ od -t x1 <test.sh
0000000 ef bb bf 23 21 2f 64 61 74 61 2f 64 61 74 61 2f
0000020 63 6f 6d 2e 74 65 72 6d 75 78 2f 66 69 6c 65 73
0000040 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 62 61 73
0000060 68 0a 65 63 68 6f 20 22 48 65 6c 6c 6f 20 57 6f
0000100 72 6c 64 22
0000104
~/.../journal/nginx_config $ type env
env is /data/data/com.termux/files/usr/bin/env

错误原因

从od的输出可以看到,文件开头存在ef bb bf字节序列——这是UTF-8 BOM(字节顺序标记)。bash解析shebang行时,会把BOM作为路径的一部分,导致实际查找的是带BOM前缀的#!/data/data/com.termux/files/usr/bin/env,而非正确的env路径,因此抛出"不存在"的错误。但bash会忽略该错误继续执行后续脚本内容,所以echo命令能正常输出。

解决方法

去掉文件开头的UTF-8 BOM即可,以下是几种可行方式:

  • 使用sed命令直接修改文件:
    sed -i '1s/^\xef\xbb\xbf//' test.sh
    
  • 使用dos2unix工具(需先安装:pkg install dos2unix):
    dos2unix test.sh
    
  • 在Vim编辑器中打开文件后,执行命令去掉BOM并保存:
    :set nobomb
    :w
    

内容的提问来源于stack exchange,提问作者velw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:17:41