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

推荐订阅源

F
Fortinet All Blogs
Recent Announcements
Recent Announcements
H
Help Net Security
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
小众软件
小众软件
Last Week in AI
Last Week in AI
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
云风的 BLOG
云风的 BLOG
V
V2EX
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿

轶哥博客

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 风格。

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