gnu make 无法在 ~/.local/bin 中找到命令

gnu make 无法在 ~/.local/bin 中找到命令

我在中放置了一些命令~/.local/bin,并正确地将其添加到路径中:

$ echo $PATH
~/.local/bin:~/.gem/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/vendor_perl:/usr/bin/core_perl
$ ls ~/.local/bin
dul-daemon        ipcluster      iptest       ...
$ type -a pelican
pelican is /home/juanlu/.local/bin/pelican

但即使我可以将这几行放入 GNU make 配方中,它最终也无法执行该命令:

$ cat Makefile 
fail:
    @echo $$PATH
    @compgen -c | grep pelican
    @pelican --help
$ make fail
~/.local/bin:~/.gem/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/vendor_perl:/usr/bin/core_perl
pelican-import
pelican-themes
pelican-quickstart
pelican
make: pelican: Command not found
make: *** [fail] Error 127

我曾尝试在其他地方寻找解决方案,但我甚至找不到在 Google 中编写搜索查询以返回有意义的内容的方法。

答案1

问题是,您的$PATH包含文字~而不是实际路径。~/...语法是 shell 特有的;execvp()例如,它不会被 glibc 的函数扩展。

使用绝对路径,例如PATH="$HOME/.local/bin:$HOME/.gem/ruby/1.9.1/bin:$PATH

相关内容