Bash不被认可?

时间:2014-06-08 00:53:45

标签: bash makefile

我正在尝试为c1000a构建open source drivers来修复我的路由器。但是,我遇到了一个奇怪的问题:

$ make PROFILE=963268BGW
make version is 3.81
kernel version is 3.13.0-29-generic
shell is /bin/sh.  Bash version is 
***************************************************
ERROR: /bin/sh does not invoke bash shell
***************************************************
make: *** [prebuild_checks] Error 1

任何人都可以解释这可能意味着什么吗?

2 个答案:

答案 0 :(得分:4)

答案是有人编写了一个脚本或Makefile,它依赖于/bin/sh作为Bash,并且不遗余力地编写代码以检测是否是这种情况,而不是编写找到shell的代码这是运行脚本所必需的,例如/bin/bash/usr/bin/bash

很容易告诉GNU Make用什么shell来执行build" recipes" (规则体),即SHELL变量。默认值为/bin/sh/,但如果您输入

SHELL = /usr/bin/bash  # or whatever else

然后GNU Make将使用它。

我输出了测试/bin/sh的逻辑的Makefile并将其解救出来,并将SHELL变量设置为指向Bash。

答案 1 :(得分:0)

当您在Debian风格分发(例如Ubuntu)中进行编译时,可能会发生此错误。使用以下命令编译:

$> make PROFILE=963268BGW SHELL=/bin/bash