惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
量子位
V
V2EX
S
SegmentFault 最新的问题
月光博客
月光博客
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
博客园_首页
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
Y
Y Combinator Blog
The Cloudflare Blog
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
B
Blog
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed

轶哥博客

blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog
blog
2023-03-21 · via 轶哥博客

执行Shell脚本提示:

/bin/bash^M: bad interpreter: No such file or directory
...

这个问题是由于在 Windows 系统中创建或编辑的 shell 脚本文件,在行尾使用了 Windows 风格的换行符(CRLF,即回车+换行),而非 Unix 风格的换行符(LF,即换行)。当您在 Unix 或 Linux 系统上运行这个脚本时,它不能正确解析这个 Windows 风格的换行符,从而导致报错。

要解决这个问题,您需要将脚本文件中的换行符从 CRLF 转换为 LF。以下是几种方法:

  1. 使用 dos2unix 工具转换: 在 Unix 或 Linux 系统上,您可以使用 dos2unix 工具将 CRLF 转换为 LF。如果尚未安装此工具,请首先安装它。安装方法因系统而异,例如在 Ubuntu 或 Debian 上,使用以下命令安装:

    sudo apt-get install dos2unix
    

    安装完成后,使用以下命令将脚本文件转换为 Unix 风格的换行符:

    dos2unix your_script.sh
    
  2. 使用 sed 命令转换: 如果没有安装 dos2unix,也可以使用 sed 命令实现转换。在终端中运行以下命令:

    sed -i 's/\r$//' your_script.sh
    
  3. 使用文本编辑器转换: 您还可以使用支持多种换行符风格的文本编辑器(如 VSCode、Notepad++、Sublime Text 等)来转换换行符。例如,在 VSCode 中,您可以在状态栏上找到“CRLF”字样,点击它,然后选择“LF”来将换行符风格更改为 Unix 风格。

更改换行符后,请再次运行您的脚本,问题应该已经解决。