2

У меня есть несколько команд мест в ~/.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 recipe, он в итоге не сможет выполнить команду:

$ 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 ответ1

3

Проблема в том, что ваш $PATH содержит литерал ~ вместо реального пути. Синтаксис ~/... является специфическим для оболочки; например, он не раскрывается функцией execvp() glibc.

Используйте абсолютные пути, как в PATH="$HOME/.local/bin:$HOME/.gem/ruby/1.9.1/bin:$PATH

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .