You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL Ubuntu环境下终端可执行命令但文本文件执行失败问题求助

解决WSL中执行编译脚本的错误问题

Hey there! Let's figure out why your script is throwing those errors and get it working smoothly. Here's what's going wrong and how to fix it:

核心错误原因

1. Windows与Linux的换行符不兼容

Windows用的是CRLF(\r\n)作为换行符,而Linux只用LF(\n)。当你在Windows里编辑Compile.txt然后拿到WSL里运行时,每个命令末尾都会多一个隐藏的\r字符:

  • 比如cd python变成了cd python\r,系统找不到名为python\r的目录(这就是你看到cd: $'python\r': No such file or directory的原因)
  • 这个\r还干扰了make命令,导致它识别错误的目标,出现No rule to make target 'clean gcc -o .o'这类混乱的错误

2. 你的文件不是可执行的shell脚本

直接用./Compile.txt运行时,Linux不知道这是一个要执行的脚本:

  • 它没有可执行权限
  • 没有明确告诉系统用什么程序来解释它(比如bash)
  • .txt后缀也会让系统默认把它当成普通文本文件,而不是可执行脚本

分步解决方案

1. 修复换行符问题

先把文件里的Windows换行符转换成Linux格式:

  • 安装转换工具(如果没装的话):
    sudo apt update && sudo apt install dos2unix
    
  • 转换你的文件:
    dos2unix Compile.txt
    
    如果你不想装工具,也可以用sed命令直接替换掉\r
    sed -i 's/\r$//' Compile.txt
    

2. 把文件改成标准的shell脚本

  • 先重命名文件,用.sh后缀更清晰:
    mv Compile.txt compile.sh
    
  • 编辑脚本,在第一行加上shebang(告诉系统用bash执行脚本):
    nano compile.sh
    
    把内容改成:
    #!/bin/bash
    make clean
    make
    cd python
    python setup.py install --user
    
    Ctrl+O保存,Ctrl+X退出nano。

3. 给脚本添加执行权限

运行这个命令让脚本变成可执行的:

chmod +x compile.sh

4. 运行脚本

现在你就可以直接执行脚本了:

./compile.sh

临时替代方案(如果不想改脚本)

如果你暂时不想修改文件,也可以直接用bash来解释执行你的文本文件:

bash Compile.txt

不过还是推荐上面的标准脚本方式,更规范也不容易出错。

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

火山引擎 最新活动