Linux运行Window上创建的脚本换行符导致异常

Linux运行Window上创建的脚本换行符导致异常

异常如下:

bash 复制代码
test.sh: line 2: cd: $'/usr/local/postgresql/bin/\r': No such file or directory

这个错误信息表明,在你的 test.sh 脚本的第二行,你尝试使用 cd 命令来改变当前目录到 '/usr/local/postgresql/bin/\r',但系统找不到这个路径。

这里的关键是路径字符串末尾的 \r。这通常是由于在Windows系统上创建的文本文件(包括脚本文件),然后在Linux或Unix系统上运行时出现的问题。Windows使用回车符(\r\n)作为行结束符,而Linux/Unix使用换行符(\n)。当在Linux/Unix系统上读取由Windows创建的文件时,\r 字符会被当作普通字符对待,导致路径错误。

为了解决这个问题,你可以采取以下步骤:

方式一:转换文件行结束符:

使用 dos2unix 工具将文件从DOS/Windows格式转换为Unix格式。如果你的系统上没有安装这个工具,你可以使用包管理器(如apt、yum或dnf)来安装它。

bash 复制代码
dos2unix minutes15.sh

这个命令会删除文件中的 \r 字符,使得路径正确。

方式二:手动删除回车符:

如果你没有 dos2unix 工具,你也可以使用 sed、tr 或其他文本处理工具来删除回车符。例如:

bash 复制代码
sed -i 's/\r$//' test.sh

或者

bash 复制代码
tr -d '\r' < test.sh > test_unix.sh

然后,你可以使用转换后的 test_unix.sh 文件来替代原来的脚本文件。

给予执行权限:

如果文件转换后仍然无法执行,确保你给了脚本执行权限:

bash 复制代码
chmod +x test.sh

完成以上步骤后,你应该能够成功执行 test.sh 脚本了

相关推荐
好奇的菜鸟1 小时前
Docker 配置项详解与示例
运维·docker·容器
xcs194051 小时前
集运维 麒麟桌面版v10 sp1 2403 aarch64 离线java开发环境自动化安装
运维·自动化
BAOYUCompany1 小时前
暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目
运维·服务器
超龄超能程序猿2 小时前
Bitvisse SSH Client 安装配置文档
运维·ssh·github
奈斯ing2 小时前
【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案
运维·redis·缓存·数据库架构
鳄鱼皮坡3 小时前
仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器
运维·服务器
即将头秃的程序媛3 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
fangeqin3 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
小Mie不吃饭3 小时前
FastAPI 小白教程:从入门级到实战(源码教程)
运维·服务器
fo安方4 小时前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix