간단한 스크립트가 있습니다.
#!/usr/bin/env ruby --verbose
# script.rb
puts "hi"
내 OSX 상자에서 정상적으로 실행됩니다.
osx% ./script.rb
hi
그러나 내 리눅스 상자에서 오류가 발생합니다.
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
, 아니면 내가 모르는 다른 문제가 있습니까?