• 请不要在回答技术问题时复制粘贴 AI 生成的内容
orbwalker
V2EX  ›  程序员

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

  •  
  •   orbwalker · Oct 29, 2019 · 3598 views
    This topic created in 2567 days ago, the information mentioned may be changed or developed.
    vim demo.sh

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

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

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

    18 replies  •  2019-10-30 19:18:53 +08:00
    ysc3839
    ysc3839
    Oct 29, 2019❤️1
    1
    代码是什么?运行环境是什么?什么情况下出现的 No such file or directory ?
    zerofiny
    zerofiny
    Oct 29, 2019❤️1
    2
    dos2unix 转换下脚本
    airfling
    airfling
    Oct 29, 2019❤️1
    3
    windows 下的是 dos 格式,需要转成 unix 格式,具体操作就是把换行符由\r\n 换成\r
    C02TobNClov1Dz56
    C02TobNClov1Dz56
    Oct 29, 2019❤️1
    4
    @airfling linux 上是\n 吧, 楼主是 unix 还是 linux?
    wangyzj
    wangyzj
    Oct 29, 2019❤️1
    5
    @hasdream +1
    同时二进制传输 ftp
    CallMeReznov
    CallMeReznov
    Oct 29, 2019❤️1
    6
    notepad++ editplus
    funky
    funky
    Oct 29, 2019❤️1
    7
    set ff=unix
    ipwx
    ipwx
    Oct 29, 2019❤️1
    8
    .sh 执行要看第一行决定解释器,比如 #!/bin/bash

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

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

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

    没有换行问题,
    没有#!/bin/bash 问题。
    没有乱码问题。
    unicode:全中文变量名,函数名,参数名,中文脚本名,等。
    .ps1 脚本带有 bom 头,支持 Linux+vi 编辑。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   512 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 21:29 · PVG 05:29 · LAX 13:29 · JFK 16:29
    ♥ Do have faith in what you're doing.