如何解决在unix系统下创建的.sh脚本在WSL中运行报错的问题

项目中大部分同事用的都是Mac或者Ubuntu,而我用不惯,大部分时间都是使用Windows,在WSL(Windows sub system for Linux)。

一切都很美好,我可以使用unix系统中的各种工具包,同时也能使用早已习惯的Windows操作习惯和文件管理方式。更棒的是二者还共享文件系统。

但是也会有一些小问题,比如之前遇到的 Ubuntu on Windows (WSL) 使用git时显示所有文件都被更改

最近又遇到一个问题,在unix类系统中写的脚本在WSL中运行的时候会报错:

scripts/test.sh: line 2: $'\r': command not found
scripts/test.sh: line 3: syntax error near unexpected token `$'{\r''
scripts/test.sh: line 2: syntax error near unexpected token `$'{\r''
'cripts/test.sh: line 2: `function cleanup {

这还是unix和windows系统下文本结尾字符定义不同导致。修复方法有两种:

  • 使用 dos2unix:
    apt install dos2unix
    dos2unix FILE_NAME
    
  • 使用 sed
    sed -i 's/\r//' setup.sh

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.