Linux 下关于 .sh文件运行的问题

2020-03-21  本文已影响0人  CW不要无聊的风格

Date: 2020/03/21

Author: CW

前几天对C++下实现的 NMS(非极大值抑制)进行编译时,需要运行 make.sh 文件,出现了一些小问题,问题虽小,但为了日后能够不被这些小鸡毛蒜皮的杂事浪费人生,特在此进行记录,作为问题手册。


运行方式

    以当前目录下文件名为 make.sh 为例:

        i). ./make.sh

        ii). sh make.sh


可能出现的问题

    还是以当前目录下文件名为 make.sh 为例:

        i). -bash: ./make.sh: Permission denied

            在linux终端输入 ls -al,可以看到形如 -rwx-r--r-- (一共10个参数)的结果,其中 r、w、x 分别代表可读、可写、可执行第2-4个参数代表 user 权限,第 5-7 个参数代表 group 权限,最后的第 8-10 个参数代表 others 权限,而第1个参数和权限无关。

            如果该问题发生了,那么正常情况下,可以看到 make.sh 对应的结果应该没有执行权限。于是,解决方式之一是输入 chmod 777 make.sh 提高权限,使得所有人都对该文件拥有读写和执行权限(rwx 占3位,若拥有所有权限则是2^3 - 1 = 7,每个7分别代表user、group、others)。

        ii). /usr/bin/env: "bash\r": No such file or directory

            通常是由于文件中多了 \r 这个字符,在linux终端下,输出 \r 会什么都不显示,只是把光标移到行首。这样,文件中第一行是 /usr/bin/env bash,接着遇到 \r 后,光标就会被移到行首。

            解决方式之一是用 vi 打开文件,重新设置下文件格式:

                1). vi make.sh

                2). :set ff,然后回车;

                3). :set ff=unix;

                4). :wq!

            注意以上2)、3)、4)均有冒号

    

上一篇下一篇

猜你喜欢

热点阅读