我在中放置了一些命令~/.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