Tôi đã có một kịch bản đơn giản:
#!/usr/bin/env ruby --verbose
# script.rb
puts "hi"
Trên hộp OSX của tôi, nó chạy tốt:
osx% ./script.rb
hi
Tuy nhiên, trên hộp linux của tôi, nó bị lỗi
linux% ./script.rb
/usr/bin/env: ruby --verbose: No such file or directory
Nếu tôi chạy dòng shebang bằng tay, nó hoạt động tốt
linux% /usr/bin/env ruby --verbose ./script.rb
hi
Nhưng tôi có thể sao chép lỗi nếu tôi đóng gói ruby --verbose
thành một đối số duy nhất đểenv
linux% /usr/bin/env "ruby --verbose" ./script.rb
/usr/bin/env: ruby --verbose: No such file or directory
Vì vậy, tôi nghĩ rằng đây là một vấn đề với cách env
diễn giải việc thiết lập lại dòng shebang. Tôi đang sử dụng 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.
Điều này có vẻ thực sự kỳ lạ. Đây có phải là một vấn đề phổ biến với phiên bản này env
hay không, có điều gì khác đang xảy ra ở đây mà tôi không biết?