关于脚本文件(文本文件)的 Line Endings

本文探讨了在Linux环境下运行Shell脚本时,因行尾格式为Windows格式而引发的错误。强调了将文件的LineEndings改为Unix格式的重要性,并提供了Notepad++和SublimeText的修改方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在 Linux 跑 shell 脚本时踩了一个坑,在脚本没问题的情况且赋权的情况下,报"No such file or directory…"的错误。
原因是在 Window环境下,文本文件(包括纯文本内容的脚本文件),默认的 Line Endings(行尾格式)是 “Windows” 格式,在 Linux 环境跑脚本时应使用 “Unix” 格式。
下面是这两种 Line Endings 格式的区别:

Line Endings 格式区别
Windows (CRLF)行尾是 ‘r\n’,即回车+换行
Unix (LF)行尾是 ‘\n’,即换行

如果在 Linux 环境使用 Line Endings 为"Windows"格式,可能会因为多出来的 ‘\r’ (与“Unix”格式相比)导致报错(虽然不一定会报错)。
所以,在 Linux 跑脚本的时候,要注意一下脚本文件的 Line Endings,务必将文件的 Line Endings 改为 “Unix” 格式。

NotePad++可以再右下角直接更改(有些版本需要在编辑选项卡里改);
Sublime Text在View→Line Endings里更改。

此外,在 Linux 运行 HQL 文件时(hive -f hive.sql),报错:ParseException line 1:0 character ‘’ not supported here
因为被hive认可编译的是 UTF-8 无BOM格式编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值