我有一个简单的脚本:
#!/usr/bin/env ruby --verbose
# script.rb
puts "hi"
Run Code Online (Sandbox Code Playgroud)
在我的 OSX 机器上,它运行良好:
osx% ./script.rb
hi
Run Code Online (Sandbox Code Playgroud)
但是,在我的 linux 机器上,它会引发错误
linux% ./script.rb
/usr/bin/env: ruby --verbose: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我手动运行 shebang 线,它工作正常
linux% /usr/bin/env ruby --verbose ./script.rb
hi
Run Code Online (Sandbox Code Playgroud)
但是如果我打包ruby --verbose
成一个参数,我可以复制错误env
linux% /usr/bin/env "ruby --verbose" ./script.rb
/usr/bin/env: ruby --verbose: No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以我认为这是如何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 …
Run Code Online (Sandbox Code Playgroud)