我正在尝试在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(无论它是什么)!
答案 0 :(得分:3)
您遇到编码问题。
请注意:https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8
将文本错误解释为ISO-8859-1或CP1252的文本编辑器或Web浏览器将显示字符为此。
将文件保存为UTF-8,无需BOM或使用系统编辑器(vi,...)