当前位置: 首页 > article >正文

#!/bin/bash^M 坏的解释器:没有哪个文件或者目录

#!/bin/bash^M 坏的解释器:没有哪个文件或者目录

  • 问题背景
  • 问题分析
  • 问题解决
    • dos2unix
    • sed
    • vim编辑器(推荐)
    • 在Windows上转换文件格式
  • 最后

问题背景

工作中,在Windows上编写的shell脚本上传到Linux服务器,在执行的时候提示:# !/bin/bash^M 坏的解释器:没有哪个文件或者目录。

问题分析

这个问题通常是由于Windows和Linux系统在处理文件换行符上的差异导致的。Windows系统使用CRLF(\r\n)作为换行符,而Unix/Linux/macOS系统使用LF(\n)作为换行符,MacintoshOS使用CR(\r)作为换行符。因此,在Windows上编写的脚本文件被上传到Linux服务器时,文件中的\r(回车符)会导致Linux解释器无法正确识别脚本的第一行,通常是#!/bin/bash,从而出现错误。

问题解决

为了解决这个问题,可以采取以下几种方法之一

dos2unix

这个工具可以将文件的换行符从Windows格式(CRLF)转换为Unix/Linux/macOS格式(LF)。如果的Linux服务器上没有安装dos2unix,可以通过包管理器安装它,例如在Debian或Ubuntu系统上可以使用sudo apt-get install dos2unix命令安装。然后,使用dos2unix yourscript.sh命令转换脚本文件。

sed

使用sed命令来删除文件中的\r字符。运行sed -i ‘s/\r$//’ yourscript.sh命令可以移除脚本文件中每一行末尾的\r字符。

vim编辑器(推荐)

  • 使用vim编辑器,打开脚本文件,然后使用:set fileformat=unix命令将文件格式转换为Unix格式,最后保存退出即可。

  • 也可以使用一条命令在vim中设置文件格式为Unix格式,并保存文件,而不需要进入交互式模式。
    vim -c “set fileformat=unix” -c “wq” yourscript.sh
    这条命令做了以下几件事情:
    1.vim yourscript.sh:打开yourscript.sh文件。
    2.-c “set fileformat=unix”:执行vim命令设置文件格式为Unix。
    3.-c “wq”:执行vim命令保存文件并退出。
    这样,就可以在不打开vim交互式界面的情况下,直接将文件格式转换为Unix格式并保存。

在Windows上转换文件格式

在将文件传输到Linux服务器之前,你可以在Windows上使用文本编辑器(如Notepad++/Idea)将文件的换行符格式转换为Unix(LF)格式。在Notepad++中,可以通过“文件”->“转换”->“DOS到UNIX”的选项来实现这一点。

最后

以上方法可以是通过网络和自己实践总结,如有问题,还请批评指正。推荐使用vim编辑器,可以在shell脚本中直接执行,而不需要交互式操作。

愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!


http://www.kler.cn/a/453285.html

相关文章:

  • (亲测)frp对外提供简单的文件访问服务-frp静态文件效果
  • 解决:excel鼠标滚动幅度太大如何调节?
  • 第十七届山东省职业院校技能大赛 中职组“网络安全”赛项任务书正式赛题
  • 面经zhenyq
  • git push origin HEAD:refs/for/分支名
  • 【R语言遥感技术】“R+遥感”的水环境综合评价方法
  • C语言基础:指针(数组指针与指针数组)
  • sentinel笔记10- 限流规则持久化(下)
  • TypeScript 与后端开发Node.js
  • 实时、准实时、离线事件
  • uniapp中的条件编译
  • 【自动驾驶】3 激光雷达②
  • OpenLayers实现渐变透明填充和光效边界
  • 哈弗结构:深入浅出的理解
  • yolov8 label_studio 半自动化标注
  • 裴蜀定理和扩展欧几里得定理
  • 工业金融政务数据分类分级体系建设解读
  • WEB 漏洞 - 文件包含漏洞深度解析
  • Python+OpenCV系列:【打卡系统-工具模块设计】工具模块深度揭秘,考勤智能化的核心秘籍!
  • 无影云电脑的高性能与便捷性
  • 评估大语言模型在药物基因组学问答任务中的表现:PGxQA
  • 菜鸟带新鸟——基于EPlan2022的部件库制作(3D)
  • ubuntu 网络管理--NetworkManager
  • 硬件设计:LVDS电平标准
  • 抖音小程序登录(前端通过tt.login获取code换取openId)
  • 生成10级子目录,每个子目录下有100个不同大小的文件