1

I am trying to run my shell script from command line lets say;

my script looks like this:

#!bin/bash

echo hello

When try to run this source ./abcd.sh I get this error.

"' is not a typo you can run the following command to lookup the package that contains the binary:
    command-not-found 
: command not found
hello
"

Never seen this before something wrong with having a empty line before "echo hello" ? I was wondering if anyone else encountered something like this.

4

5 回答 5

5

随着脚本的第一行是注释,听起来您的文件具有 DOS 行结尾,并且回车被视为未找到的命令。错误消息听起来像是自定义command_not_found_handle函数(我相信 Ubuntu 定义的)提供的东西。

于 2013-06-11T00:11:24.033 回答
2
#!bin/bash

需要是

#!/bin/bash

或安装 bash 的任何地方(您可以通过 找到它whereis bash)。

当使用 bash 调用时,您的程序应该可以正常工作,即 ,bash ./abcd.sh但是当直接执行时./abcd.sh,hashbang 行确实很重要,因为这是为可执行文件中包含的脚本定位解释器的方式。

于 2013-06-10T23:26:13.560 回答
0

尝试echo 'hello',在引号内。看起来echo命令之间有一个换行符,hello并且它正在尝试将“hello”作为命令运行。

hashbang 行应该是#!/bin/bash,但弄乱它并不重要,因为它会将任何以 hash 开头的行解释为注释。

于 2013-06-10T23:23:25.763 回答
0

使用调试选项运行脚本以查看实际失败的行:

bash -x abcd.sh

注意:在这种情况下,Shebang行将被视为注释,因此如果脚本的其余部分正确,它将正确执行:

$ bash -x abcd.sh
+ echo hello
hello
于 2013-06-10T23:26:14.527 回答
0

确保您的文件没有BOM 我在 Windows 下使用 Notepad++ 编辑脚本时遇到了同样的问题。确保转换为“UTF-8 witout BOM”。

于 2016-02-21T17:48:54.977 回答