如果没有shebang,Bash脚本不起作用但是shebang会导致错误消息

时间:2016-01-26 15:00:28

标签: linux bash centos shebang

我正在尝试在CentOS 6中运行bash脚本。如果没有shebang标头,它将无法运行。但是,当我包含shebang时,它会显示错误消息!

这是一个名为test.sh的脚本。我在$ HOME / bin目录中有它。我在其上运行chmod 777以消除任何权限问题。我确认它使用的是Unix行结尾...

test_var=test
echo $test_var

我这样执行:

sh ~/bin/test.sh

我从中得到以下结果:

/home/myusername/bin/test.sh: line 1: test_var=test: command not found

现在我添加一个shebang,所以脚本变为:

#!/bin/bash
test_var=test
echo $test_var

当我跑步时,我得到:

/home/myusername/bin/test.sh: line 1: #!/bin/bash: No such file or directory
test

所以添加shebang后分配变量没有问题,但它不同时喜欢shebang!

我查了一下,/bin/bash确实存在。我尝试了一些其他的shebangs并得到了相同的结果。我甚至尝试过一些无效的东西,即#!/fake/path,结果是一样的!

如果没有添加shebang(不管它是什么),脚本将无法运行,但它会抱怨shebang(无论它是什么)!

1 个答案:

答案 0 :(得分:3)

您遇到编码问题。

请注意:https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8

  

将文本错误解释为ISO-8859-1或CP1252的文本编辑器或Web浏览器将显示字符为此。

将文件保存为UTF-8,无需BOM或使用系统编辑器(vi,...)