我在一个EC2实例上使用这个Amazon Linux2AMI:amazon/amzn2-ami-hvm-2.0.20210525.0-x86_64-gp2
这个Makefile可以很好地工作:
.SHELLFLAGS := -euo pipefail -c
SHELL := bash
all:
echo here
当我运行make all
时,我得到:
bash-4.2$ make all
echo here
here
然后我将.ONESHELL:
添加到Makefile中:
.ONESHELL:
.SHELLFLAGS := -euo pipefail -c
SHELL := bash
all:
echo here
现在,当我运行make all
时,我得到:
bash-4.2$ make all
echo here
bash: line 0: bash: echo here: invalid option name
make: *** [all] Error 2
Bash版本:
GNU bash, version 4.2.46(2)-release (x86_64-koji-linux-gnu)
生成版本:
GNU Make 3.82
Built for x86_64-koji-linux-gnu
如果我删除.SHELLFLAGS
,它将会成功运行,所以问题似乎是两者的组合。使用ONESHELL,SHELLFLAGS似乎也被破坏了。
发布于 2021-06-19 05:26:26
它是make 3.82中的一个bug,在4.0中修复。同时使用.ONESHELL
和.SHELLFLAGS
时,未正确标记标志。
您需要放弃其中一个,或者升级您的make
(可能在您的发行版之外)。
https://stackoverflow.com/questions/68040084
复制相似问题