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 脚本了

相关推荐
欧米欧11 分钟前
解析Linux从umask位运算到粘滞位
linux
pt104315 分钟前
Cisco Splunk for AI Operations:AIOps企业实践
运维·人工智能·自动化
郝学胜-神的一滴22 分钟前
C++20模板元编程 04:变量模板 别名模板与模板Lambda实战
服务器·开发语言·数据结构·c++·程序人生
江屿风35 分钟前
【Linux系统】【Linux进程终止等待详解与程序替换机制初体验】流食般投喂
linux·运维·笔记·系统架构·centos·unix
螺蛳粉 螺蛳粉43 分钟前
CentOS 7.9 自建 Yum 源服务器搭建指南
linux·服务器·centos
赋创小助手44 分钟前
Qwen3.8-27B 本地推理 Benchmark 解析:llama.cpp、vLLM、SGLang 与长 Context 的性能差异
服务器·人工智能·大模型·qwen·vllm·sglang·context长度
2601_949499941 小时前
工业 POF 器件国产化新思路:芯瑞科技DT‑2532Z 解决安华高 HFBR‑2532Z 供应链卡点
运维·网络·人工智能·科技·光模块
fanxiaohui121381 小时前
2026符合上飞机标准的充电宝推荐南孚传应,质量稳定又安全
运维·服务器·人工智能·科技
国际云,接待1 小时前
云服务器跨厂商迁移怎么尽量不停机:用 rsync、MySQL binlog 和 DNS TTL 做双阶段切换
运维·服务器·mysql
宝塔面板1 小时前
宝塔拨测正式发布:网站测速、持续监控、异常告警
运维