ฉันมีสคริปต์ง่าย ๆ :
#!/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 line ด้วยตนเองมันก็ใช้ได้ดี
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
หรือมีสิ่งอื่นที่เกิดขึ้นที่ฉันไม่รู้หรือไม่