【发布时间】:2016-05-03 04:43:38
【问题描述】:
我正在尝试在 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(无论它是什么)!
【问题讨论】:
-
运行
bash /home/myusername/bin/test.sh时会发生什么? -
刚试过。同样的事情。
-
也试过 /bin/bash /home/myusername/bin/test.sh
-
文件中的字符可能听起来很时髦。尝试删除文件的第一行并再次运行,在命令行调用中显式使用 bash。
-
好建议,但我已使用 Notepad++ 对其进行了编辑,显示所有字符。没有时髦的字符。