-- 关于 shell 脚本在 windows 上开发问题

2019 年 10 月 29 日
 orbwalker
vim demo.sh

vim 创建出来的,改变权限就能使用

windows 上,sublime 创建的 sh 脚本,utf-8 无 bom 格式。

结果同样的代码,硬是显示 No such file or directory

3259 次点击
所在节点    程序员
18 条回复
ysc3839
2019 年 10 月 29 日
代码是什么?运行环境是什么?什么情况下出现的 No such file or directory ?
zerofiny
2019 年 10 月 29 日
dos2unix 转换下脚本
airfling
2019 年 10 月 29 日
windows 下的是 dos 格式,需要转成 unix 格式,具体操作就是把换行符由\r\n 换成\r
C02TobNClov1Dz56
2019 年 10 月 29 日
@airfling linux 上是\n 吧, 楼主是 unix 还是 linux?
wangyzj
2019 年 10 月 29 日
@hasdream +1
同时二进制传输 ftp
CallMeReznov
2019 年 10 月 29 日
notepad++ editplus
funky
2019 年 10 月 29 日
set ff=unix
ipwx
2019 年 10 月 29 日
.sh 执行要看第一行决定解释器,比如 #!/bin/bash

然而,如果行尾有 \r,那么它也会被认为是解释器文件名的一部分,就变成了 #!/bin/bash\r

然后 Windows 编辑器默认换行符是 \r\n 不是 \n
Hopetree
2019 年 10 月 29 日
常识问题吧,Windows 上面写的 sh 放到 linux 执行前都要转换成 unix 格式
Latin
2019 年 10 月 29 日
Linux Vim

Command
```
set ff=unix
```
orbwalker
2019 年 10 月 29 日
@ipwx </br>
谢谢,讲的非常清楚。那 sublime 怎么能将\r\n 变成默认\n ?
jdhao
2019 年 10 月 29 日
@orbwalker 网上搜一下秘籍不会问了
wnpllrzodiac
2019 年 10 月 29 日
@chengyiqun 苹果是 \r 懂这个的都是老法师。。。
Osk
2019 年 10 月 29 日
@orbwalker sublime 状态栏上好像有切换换行符的按钮,windows 上默认 Windows 换行符,设置里可以改
lxk11153
2019 年 10 月 29 日
@orbwalker #11
第一种: 菜单 view 里面( 这种问题,把菜单刷刷刷过一遍基本就解决了
第二种: 设置里添加 "show_line_endings": true 这样就会显示在状态栏了
lxk11153
2019 年 10 月 29 日
是不是可以 bash x.sh 这样执行
superrichman
2019 年 10 月 29 日
Sublime Text 配置加一行, 默认用 unix 格式换行
"default_line_ending": "unix",
ps1aniuge
2019 年 10 月 30 日
用 win,Linux 通用的 powershell,

没有换行问题,
没有#!/bin/bash 问题。
没有乱码问题。
unicode:全中文变量名,函数名,参数名,中文脚本名,等。
.ps1 脚本带有 bom 头,支持 Linux+vi 编辑。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/614053

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX