-2

我正在尝试在 redhat linux 上运行 shell 脚本来安装应用程序。我收到一条错误消息,说 /usr/bin.sh: bad interpreter: no such file or directory。

在 shell 脚本中,脚本以:

#!/usr/bin/shBUILD_ID=$1.....

我只是想了解行首的路径是什么?这是它寻找部署应用程序的目录吗?

谢谢

4

2 回答 2

3

第一行应该是#!/usr/bin/sh或者#!/bin/sh如果它是一个 shell 脚本。

如果第一行是#!/usr/bin/sh然后尝试查看 /usr/bin/sh 是否存在并且您使用ls -l /usr/bin/sh

如果您找不到sh,那么您的系统状态不佳。

于 2013-09-04T11:47:05.157 回答
2

#!是一个幻数,告诉内核该文件是一个可执行脚本。紧随其后的字符串#!是解释器的路径,该解释器被调用来读取和执行文件的内容。在行

#!/ust/bin/shBUILD_ID=$1.....

口译员是/ust/bin/shBUILD_ID=$1....。解释器是直接读取的,没有 shell 变量替换,因此它将完全按照您指定的方式查找文件(包括等号、美元、点等)。如果找不到您指定的解释器,默认 shell 会发出错误消息,而您的解释器看起来完全错误。试试#!/bin/sh。如果解释器字符串后跟一个空格,然后是一些参数,则这些参数在调用时传递给解释器。

参见例如http://bash.cyberciti.biz/guide/Shebang

于 2013-09-04T11:47:17.123 回答