首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Makefile中的ONESHELL不能与Amazon Linux 2 ami上的bash一起使用

Makefile中的ONESHELL不能与Amazon Linux 2 ami上的bash一起使用
EN

Stack Overflow用户
提问于 2021-06-19 02:41:14
回答 1查看 54关注 0票数 0

我在一个EC2实例上使用这个Amazon Linux2AMI:amazon/amzn2-ami-hvm-2.0.20210525.0-x86_64-gp2

这个Makefile可以很好地工作:

代码语言:javascript
运行
复制
.SHELLFLAGS := -euo pipefail -c   
SHELL := bash

all:
    echo here

当我运行make all时,我得到:

代码语言:javascript
运行
复制
bash-4.2$ make all
echo here
here

然后我将.ONESHELL:添加到Makefile中:

代码语言:javascript
运行
复制
.ONESHELL:

.SHELLFLAGS := -euo pipefail -c   
SHELL := bash

all:
    echo here

现在,当我运行make all时,我得到:

代码语言:javascript
运行
复制
bash-4.2$ make all
echo here
bash: line 0: bash: echo here: invalid option name
make: *** [all] Error 2

Bash版本:

代码语言:javascript
运行
复制
GNU bash, version 4.2.46(2)-release (x86_64-koji-linux-gnu)

生成版本:

代码语言:javascript
运行
复制
GNU Make 3.82
Built for x86_64-koji-linux-gnu

如果我删除.SHELLFLAGS,它将会成功运行,所以问题似乎是两者的组合。使用ONESHELL,SHELLFLAGS似乎也被破坏了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-19 05:26:26

它是make 3.82中的一个bug,在4.0中修复。同时使用.ONESHELL.SHELLFLAGS时,未正确标记标志。

您需要放弃其中一个,或者升级您的make (可能在您的发行版之外)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68040084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档