У мене простий сценарій:
#!/usr/bin/env ruby --verbose
# script.rb
puts "hi"
У моєму вікні OSX працює нормально:
osx% ./script.rb
hi
Однак у моєму вікні linux це помилка
linux% ./script.rb
/usr/bin/env: ruby --verbose: No such file or directory
Якщо я запускаю лінію shebang вручну, вона прекрасно працює
linux% /usr/bin/env ruby --verbose ./script.rb
hi
Але я можу повторити помилку, якщо впакувати ruby --verbose
в один аргумент доenv
linux% /usr/bin/env "ruby --verbose" ./script.rb
/usr/bin/env: ruby --verbose: No such file or directory
Тому я думаю, що це питання щодо того, як env
трактується скидання лінії shebang. Я використовую GNU coreutils 8.4 env
:
linux% /usr/bin/env --version
env (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Richard Mlynarik and David MacKenzie.
Це здається дивним. Це поширена проблема з цією версією env
, чи тут відбувається щось інше, чого я не знаю?