zoukankan      html  css  js  c++  java
  • linux 下 shell脚本报错:-bash: ./build.sh: /bin/sh^M: bad interpreter: No such file or directory

    Shell代码  :build.sh
    #!/bin/sh
    
    set -x
    
    SOURCE_DIR=`pwd`
    BUILD_DIR=${BUILD_DIR:-../build}
    
    mkdir -p $BUILD_DIR 
      && cd $BUILD_DIR 
      && cmake $SOURCE_DIR 
      && make $*

    上述代码来源于网络上学习大并发服务器开发的源码。

    上传到Ubuntu上,刚开始执行 

    ./build.sh

    报下面错误:

    -bash: ./build.sh: Permission denied

    原来是没有赋予执行权限,执行

    chmod 764 build.sh

    赋予用户执行权限。

    接着报以下错误:

    -bash: ./build.sh: /bin/sh^M: bad interpreter: No such file or directory

    经过网上查找,看到该篇博文https://www.cnblogs.com/zyb-pp/p/6429448.html 的解决办法后,成功解决。写此文仅用于记录,便于日后排查。

    主要原因是build.sh是在windows下编辑然后上传到linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。

    我们可以通过vi编辑器来查看文件的format格式。步骤如下:

    1.首先用vi命令打开文件

    vi build.sh

    2.在vi命令模式中使用 

    :set ff 

    可以看到改文件的格式为dos

    3.修改文件format为unix

    方法一:使用vi修改文件format

    命令:set ff=unix

    :set ff=unix

    执行完后再通过set ff命令查看文件格式,结果如下:

    然后执行 ./build.sh就不回报错了。

  • 相关阅读:
    android ndk 调试问题
    音频
    文件分割与c语言文件结
    本机抓包
    rtm匹 转
    mac 工具等效率
    【MySQL】Explain Tutorial
    Sed基本入门[5] Sed Hold and Pattern Space Commands
    Sed基本入门[3] Regular Expressions
    Protocol Buffer Basics
  • 原文地址:https://www.cnblogs.com/chenleideblog/p/11766082.html
Copyright © 2011-2022 走看看