gpt4 book ai didi

linux - 如果我的 `PATH` 中的可执行文件需要使用 sudo 运行,我如何才能将它们提供给 GNU Make?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:58 26 4
gpt4 key购买 nike

考虑以下 Makefile。

install:
sudo rpi-install.py /dev/ttyUSB0 foo.bin

请注意,我故意没有硬编码到 rpi-install.py 的路径因为它在其他人的机器上不在同一位置,但我希望它在 PATH 中每个使用我的代码的人。

不幸的是,当我输入 make install ,我得到以下输出。

sudo rpi-install.py  /dev/ttyUSB0 larson.bin
sudo: rpi-install.py: command not found
make: *** [install] Error 1

当我在我的 shell 中键入完全相同的命令时,它完全按照预期工作

此外,当我删除 sudo从 Makefile 中,它成功找到了二进制文件并由于缺少 root 权限而出现权限被拒绝的错误。

我怎样才能允许 make发现我的 PATH 中的程序当它们必须与 sudo 一起运行时?


为了重现性,假设以下内容在rpi-install.py中, 它位于目录 $HOME/bin 中.另外假设 PATH包括 $HOME/bin .

#!/usr/bin/env python

print "Hello World!"

最佳答案

有两个修复程序的组合解决了这个问题。

  1. 我需要在 .profile 中设置 PATH 而不是 .bashrc 因为默认的 shell /bin/sh make 使用的 没有从 .bashrc 中获取正确的路径。

  2. 根据对 this question 的回答,我需要将 makefile 中的 sudo 命令的环境明确设置为外部 PATH。 .

    sudo env "PATH=$(PATH)" rpi-install.py  /dev/ttyUSB0 larson.bin

关于linux - 如果我的 `PATH` 中的可执行文件需要使用 sudo 运行,我如何才能将它们提供给 GNU Make?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com