gnu make falha ao localizar comandos em ~ / .local / bin

2

Eu tenho alguns lugares de comandos em ~/.local/bin e o adicionei corretamente ao caminho:

$ 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

mas mesmo que eu possa colocar essas linhas em um GNU make recipe, eventualmente ele falha em executar o comando:

$ 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

Eu tentei encontrar a solução em outro lugar, mas nem sequer encontrei uma maneira de escrever uma consulta de pesquisa para colocar no Google que retorna algo significativo.

    
por astrojuanlu 13.01.2013 / 11:15

1 resposta

3

O problema é que seu $PATH contém o literal ~ em vez do caminho real. A sintaxe ~/... é algo específico para o shell; não é expandido pela função execvp() da glibc, por exemplo.

Use caminhos absolutos, como em PATH="$HOME/.local/bin:$HOME/.gem/ruby/1.9.1/bin:$PATH

    
por 13.01.2013 / 11:47

Tags