-bash: ./uninstall.command: /bin/sh^M: 坏的解释器: 没有那个文件或目录

  • 终端报错:
bash 复制代码
-bash: ./uninstall.command: /bin/sh^M: 坏的解释器: 没有那个文件或目录
  • 原因:由于文件行尾符不匹配导致的。当脚本文件在Windows环境中创建或编辑后,行尾符为CRLF (即回车和换行,\r\n),而在Unix/Linux系统中,行尾符只使用LF (换行,\n)。^M字符是Windows风格的回车符在Unix/Linux中的显示方式

可以使用以下几种方法之一来转换文件的行尾符:

1、方法一:使用 dos2unix 工具

dos2unix 是一个专门用于将文本文件从DOS/Windows格式转换为Unix格式的工具。

  • 安装 dos2unix:在Debian/Ubuntu系统上,可以通过以下命令安装:
bash 复制代码
sudo apt-get install dos2unix
  • 在RedHat/CentOS系统上,可以使用:
bash 复制代码
sudo yum install dos2unix
  • macOS用户,可以使用Homebrew安装:
bash 复制代码
brew install dos2unix
  • 转换文件:安装完成后,使用以下命令转换您的脚本文件:
bash 复制代码
dos2unix xxx

2、方法二:使用 sed 命令

如果不想安装额外的软件,可以直接使用sed命令来移除多余的回车符:

bash 复制代码
sed -i 's/\r$//' xxx
  • 这里的 -i 选项表示直接在文件中进行替换,s/\r$// 表示查找每一行结尾的 \r 并删除它。

3、方法三:使用 trperl,可以使用tr或者perl来完成相同的操作:

  • 使用 tr
bash 复制代码
tr -d '\r' < ./uninstall.command > temp && mv temp xxx
  • 使用 perl
bash 复制代码
perl -pi -e 's/\r\n|\n/\r\n/g' xxx

4、方法四:使用文本编辑器

  • 也可以通过支持行尾符转换的文本编辑器(如VS Code、Sublime Text、Notepad++等)打开文件并手动转换行尾符格式。
相关推荐
名字还没想好☜23 分钟前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
酷在前行2 小时前
【R生态】PERMANOVA 进阶实战:距离选择、PERMDISP、两两比较与受限置换(保姆级教程)
开发语言·r语言
cxr8283 小时前
Graphify vs GitNexus vs CodeGraph — 三工具架构深度对比
开发语言·架构·知识图谱
废弃的小码农4 小时前
功能测试--Day07--Python编程基础
开发语言·python
fengci.4 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
程序员zgh4 小时前
C++ 拷贝赋值运算符 详解
c语言·开发语言·c++
念何架构之路4 小时前
restartmanager-重启管理子系统
java·开发语言
SomeB1oody5 小时前
【RustyML入门】2.0. 经典机器学习
开发语言·后端·机器学习·rust·教程
0566466 小时前
Python高级——解释器执行原理与虚拟环境工程化实战
开发语言·python
HJX_07247 小时前
嵌入式软件C语言八股文复习笔记5——编译、链接与底层硬核机制
c语言·开发语言·笔记