代码之家  ›  专栏  ›  技术社区  ›  BuvinJ Felix

没有shebang,Bash脚本无法工作,但shebang会导致错误消息

  •  0
  • BuvinJ Felix  · 技术社区  · 9 年前

    我试图在CentOS6中运行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 事实上确实存在。我试了一组其他的shebang,得到了同样的结果。我甚至尝试了一些明显无效的东西,即。 #!/fake/path ,结果是一样的!

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

    1 回复  |  直到 9 年前
        1
  •  3
  •   Ghislain Rouvignac    8 年前

    您有编码问题。

    看看: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8

    如果文本编辑器或web浏览器将文本误解为ISO-8859-1或CP1252,则会显示相应的字符。

    将文件保存为UTF-8,不带BOM表或使用系统编辑器(vi,…)