/ bin / bash在哪里被更改为/ bin / sh?

时间:2015-09-09 08:39:32

标签: macos bash shell gnu-make

我从GNUmakefile抓住了以下错误,并且我试图理解为什么/bin/sh被使用:

$ make diff
/bin/sh: 541: Bad file descriptor
rm -f cryptopp563.diff

食谱是:

.PHONY: diff
diff:
    -rm -f cryptopp$(LIB_VER).diff
    $(shell svn diff -r 541> cryptopp$(LIB_VER).diff)

我知道541的来源。但我不明白为什么我的shell从/bin/bash更改为/bin/sh

$ printenv | grep -i shell
SHELL=/bin/bash
$ cat GNUmakefile | grep SHELL
SHELL ?= /bin/bash

更改shell的位置或原因在哪里?

1 个答案:

答案 0 :(得分:2)

?=运算符仅在没有值的情况下设置变量。如果您总是需要bash,请改为使用=:=

制作SHELL与你的SHELL不一样。

Recipes>中记录了它执行>选择Shell

  

与大多数变量不同,变量SHELL永远不会从中设置   环境。这是因为使用了SHELL环境变量   指定您个人选择的shell程序以供交互使用。   像这样的个人选择会影响到这一点,这将是非常糟糕的   makefile的功能。请参阅环境中的变量