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

WSL中存在且有执行权限的bash脚本无法通过绝对路径执行求助

WSL执行Windows磁盘bash脚本提示“No such file or directory”的排查与解决

常见原因及对应解决方法

1. 脚本换行符为Windows格式(CRLF)

Windows下创建的文件默认用CRLF换行,而Linux环境要求LF换行。bash执行时会把shebang行(如#!/bin/bash)识别为#!/bin/bash^M,系统找不到这个不存在的解释器,因此报错“文件不存在”。

解决方法:

  • 安装dos2unix工具转换:
    sudo apt update && sudo apt install dos2unix
    dos2unix /mnt/e/path/to/my_script.sh
    
  • 用sed命令直接替换换行符:
    sed -i 's/\r$//' /mnt/e/path/to/my_script.sh
    
  • 在Windows编辑器中修改换行格式(比如VS Code右下角点击“CRLF”切换为“LF”后保存)

2. WSL挂载Windows磁盘时启用了noexec选项

如果WSL挂载Windows分区时带有noexec参数,即使脚本设置了执行权限也无法运行。

解决方法:

  • 查看当前挂载参数,执行mount命令,找到/mnt/e的挂载行,确认是否包含noexec。
  • 创建或修改/etc/wsl.conf文件,添加自动挂载配置:
    [automount]
    options = "metadata,umask=0022,fmask=0133,exec"
    
  • 重启WSL生效:在Windows命令提示符或PowerShell中执行wsl --shutdown,再重新打开WSL终端。

3. 脚本shebang行错误

脚本第一行的shebang(解释器路径)写错,导致系统无法找到正确的执行程序。

解决方法:

  • 检查脚本第一行是否为#!/bin/bash,可以用cat -A /mnt/e/path/to/my_script.sh查看行尾是否有异常字符。
  • 确认WSL中bash的实际路径:执行which bash,输出应为/bin/bash,若shebang行路径不符则修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:42:34