为什么我的.sh文件没有在终端中运行?

时间:2016-07-27 22:30:40

标签: shell file execute

所以我格式化#34; colors.sh",它位于我的桌面上一个名为notepad的文件中。尝试使用以下方式运行它:

    ./colors.sh

然后它说这个......

    shell@shell:~$ cd Desktop/notepad/
    shell@shell:~/Desktop/notepad$ ll
    total 144
    drwx------  2 shell shell  4096 Apr  9  2015 ./
    drwxr-xr-x 11 shell shell  4096 Jul 27 19:42 ../
    -rw-r--r--  1 shell shell 35551 Oct  7  2014 colors background.PNG
    -rwxr-xr-x  1 shell shell  2534 Apr  9  2015 colors.bat~*
    -rw-r--r--  1 shell shell 31047 Oct  7  2014 colors.PNG
    -rwxr-xr-x  1 shell shell  2475 Apr  9  2015 colors.sh*
    -rwxr-xr-x  1 shell shell  2475 Apr  9  2015 colors.sh~*
    -rw-r--r--  1 shell shell  1142 Aug 22  2013 Command Prompt.lnk
    -rw-r--r--  1 shell shell    84 Nov 21  2014 desktop.ini
    -rwxr-xr-x  1 shell shell    92 Nov 21  2014 hello.bat*
    -rw-r--r--  1 shell shell  3755 Oct 16  2014 netstat.PNG
    -rw-r--r--  1 shell shell  1158 Aug 22  2013 Notepad.lnk
    -rw-r--r--  1 shell shell   970 Nov 18  2014 NSIS.lnk
    -rwxr-xr-x  1 shell shell   504 Nov 21  2014 rainbow.bat*
    -rwxr-xr-x  1 shell shell    31 Nov 21  2014 random.bat*
    -rwxr-xr-x  1 shell shell   561 Oct  7  2014 spanish.bat*
    -rw-r--r--  1 shell shell   687 Oct  6  2014 text to speech.vbs
    -rwxr-xr-x  1 shell shell    50 Oct 12  2014 timer.bat*
    -rw-r--r--  1 shell shell  2060 Feb 13  2013 Turbo C++.lnk
    -rw-r--r--  1 shell shell   182 Sep 23  2014 welcome dif.vbs
    -rw-r--r--  1 shell shell  2472 Sep 22  2014 welcome - Shortcut.lnk
    shell@shell:~/Desktop/notepad$ chmod +x colors.sh
    shell@shell:~/Desktop/notepad$ ./colors.sh
    bash: ./colors.sh: /bin/sh^M: bad interpreter: No such file or directory

1 个答案:

答案 0 :(得分:2)

错误消息中的^M告诉所有人:您的文本文件已存储为' DOS'文本格式,即CR + LF行结尾。 U * x解释器单独使用LF(^J)字符作为行终止符,因此多余的CR(^M)字符被附加到/bin/sh shell声明,从而使其无效。

使用Unix / Linux行结尾(LF)保存文件,或在使用前将其转换为dos-to-unix转换器。