相关疑难解决方法(0)

带有 `#!/usr/bin/env 命令 --argument` 的 Shebang 行在 Linux 上失败

我有一个简单的脚本:

#!/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)

linux scripting executable env

66
推荐指数
3
解决办法
2万
查看次数

标签 统计

env ×1

executable ×1

linux ×1

scripting ×1