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

2019-10-29 14:19:25 +08:00
 orbwalker
vim demo.sh

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

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

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

2692 次点击
所在节点    程序员
18 条回复
ysc3839
2019-10-29 14:24:28 +08:00
代码是什么?运行环境是什么?什么情况下出现的 No such file or directory ?
hasdream
2019-10-29 14:33:17 +08:00
dos2unix 转换下脚本
airfling
2019-10-29 14:36:22 +08:00
windows 下的是 dos 格式,需要转成 unix 格式,具体操作就是把换行符由\r\n 换成\r
chengyiqun
2019-10-29 14:58:17 +08:00
@airfling linux 上是\n 吧, 楼主是 unix 还是 linux?
wangyzj
2019-10-29 15:18:56 +08:00
@hasdream +1
同时二进制传输 ftp
CallMeReznov
2019-10-29 15:20:21 +08:00
notepad++ editplus
funky
2019-10-29 15:38:43 +08:00
set ff=unix
ipwx
2019-10-29 15:51:31 +08:00
.sh 执行要看第一行决定解释器,比如 #!/bin/bash

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

然后 Windows 编辑器默认换行符是 \r\n 不是 \n
Hopetree
2019-10-29 16:11:03 +08:00
常识问题吧,Windows 上面写的 sh 放到 linux 执行前都要转换成 unix 格式
Latin
2019-10-29 16:27:04 +08:00
Linux Vim

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