在可执行文件中,您使用 shebang 指定环境:
#!/usr/bin/env ruby
# ruby code here
Run Code Online (Sandbox Code Playgroud)
但是如果你想指定多个可能的环境怎么办?例如,如果您安装了多个版本的 Ruby,您可能想要执行类似的操作
#!/path/to/better/ruby/version
#!/path/to/alternative/ruby/version
# ruby code here
Run Code Online (Sandbox Code Playgroud)
如何为单个可执行文件指定多个可能的环境?
简短的回答是你不能。
使用#!/usr/bin/env ruby
而不是简单地背后的想法#!/usr/bin/ruby
是使用用户路径中第一个出现的任何 ruby 二进制文件。那么你的脚本不依赖于 ruby 在每个系统上的相同位置;毕竟,一个“正常”的红宝石的位置可能是/usr/bin/ruby
,/usr/local/bin/ruby
,/opt/ruby-1.8.7/bin/ruby
,等...
如果您确实想要对某些值进行硬编码或执行一些搜索逻辑,则始终可以制作一个包装器 shell 脚本:
#!/bin/sh
for ruby in /usr/bin/ruby /usr/local/bin/ruby
do
if [ -x "$ruby" ]
then
"$ruby" myscript.rb
break
fi
done
Run Code Online (Sandbox Code Playgroud)
如果您有足够的动力,您甚至可以在 shell 脚本中嵌入一个 ruby(或其他)脚本。
归档时间: |
|
查看次数: |
4509 次 |
最近记录: |