为什么 bash 不运行带有回车符的脚本?

为什么 bash 不运行带有回车符的脚本?

我注意到,如果脚本的行尾包含回车符,bash 将拒绝运行该脚本。要观察这一点,请创建一个文件hello.sh

#!/bin/bash

echo hello

现在赋予它执行权限:

chmod 700 hello.sh

并运行./hello.sh:它工作完美!

现在试试这个:

unix2dos hello.sh
./hello.sh

我得到:

bash: ./hello.sh: cannot execute: required file not found

为什么无法运行脚本?

答案1

无论好坏,回车符都是文件名中的有效字符。实际上,您的 shell 不是在尝试执行,/bin/bash而是在尝试执行/bin/bash^M,其中^M此处代表 CR 字符。该文件不存在,因此您的 shell 无法找到指定的解释器来执行脚本。

相关内容