Por que 'env' não encontra meu executável?

2

Estou tentando usar o shebang com /usr/bin/env form para executar meu script em interpretar personalizado. É assim que meu arquivo parece:

$ cat test.rb 
#!/usr/bin/env winruby

print "Input someting: "
puts "Got: #{gets}"
sleep(100)

mas falha quando executado:

$ ./test.rb 
/usr/bin/env: ‘winruby’: No such file or directory

e eu não entendo porque

tv185035@WCZTV185035-001 ~
$ winruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]

tv185035@WCZTV185035-001 ~
$ env winruby --version
env: ‘winruby’: No such file or directory

tv185035@WCZTV185035-001 ~
$ which winruby
/home/tv185035/bin/winruby

O winruby existe, está no caminho e é executável. Mas env não consegue encontrá-lo. Eu dei uma olhada em man env mas não me disse nada útil.

EDITAR:

$ cat ~/bin/winruby 
#!/usr/bin/bash

winpty /cygdrive/g/WS/progs/Ruby25-x64/bin/ruby.exe "$@"
    
por graywolf 24.04.2018 / 10:52

1 resposta

1

Se a saída de

echo 1l|ed test.rb

termina com \r$ você tem um <carriage return> na frente do <line-feed>

As linhas no unix são terminadas por feed de linha, por isso env procura o ' winruby\r ' e não ' winruby '.

edite seu script no ambiente unix com vi , ed ou nano e remova o '\ r' do final da linha.

Editar:

Eu posso criar o mesmo resultado que você, quando meu PATH estiver definido, mas não configurado para ser exportado.

# PATH is set but not exported
jo@hostname:~/tmp$ winruby --version
running winruby --version
jo@hostname:~/tmp$ env winruby --version
env: winruby: No such file or directory

# print variables starting with PATH
jo@hostname:~/tmp$ set |grep -e ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jo/tmp/bin

# print exported variables starting with PATH
jo@hostname:~/tmp$ env | grep -e ^PATH

# Oops ! nothing, so exporting PATH
jo@hostname:~/tmp$ export PATH
jo@hostname:~/tmp$ env | grep -e ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jo/tmp/bin

# Final check
jo@hostname:~/tmp$ env winruby --version
running winruby --version
    
por 24.04.2018 / 12:36