【问题标题】:How to avoid command not found when running bash command in Makefile?如何避免在 Makefile 中运行 bash 命令时找不到命令?
【发布时间】:2021-10-11 01:36:05
【问题描述】:

我想构建一个能够在 docker 或本地 bash 中执行一些命令的 Makefile。所以,我尝试了这样的事情:

BASH_CMD := bash -c
DOCKER_CMD := docker exec api bash -c
RUN_CMD = $(BASH_CMD)

ifeq ($(USE_DOCKER), true)
    RUN_CMD = $(DOCKER_CMD)
endif

flake8:
    @echo "<<< Running flake8 >>>"
    $(RUN_CMD) "flake8 ."

问题是环境变量USE_DOCKER没有被加载(我正在导出它)并且flake8步骤给了我以下错误:

bash: flake8: command not found
make: *** [Makefile:11: flake8] Erro 127

当我尝试直接在 bash 中运行 flake8 . 时,效果很好。我也尝试导出路径,但没有成功。

我该如何解决?还有其他更好的方法吗?非常感谢您的帮助!

【问题讨论】:

  • 我建议你试试BASH_CMD := /bin/sh -c 看看是否可行。
  • 谢谢你,@MadScientist!问题是我试图用 sudo 运行 Makefile。
  • 显示您调用的确切命令以及错误总是很有帮助的。如果我们知道 sudo,我们几乎可以肯定能够立即解决问题。

标签: bash shell makefile


【解决方案1】:

问题与sudo 命令有关。 root 用户没有可用的包或环境变量。

而不是下面的命令:

sudo make flake8

这个解决了问题:

make flake8

【讨论】:

    猜你喜欢
    • 2018-05-14
    • 1970-01-01
    • 2017-08-10
    • 2016-08-12
    • 1970-01-01
    • 2023-03-21
    • 2012-04-24
    • 2019-04-15
    • 2016-09-27
    相关资源
    最近更新 更多