【发布时间】:2015-03-04 19:49:55
【问题描述】:
我使用的是 Mac OS X。我安装了两个版本的 Ruby(2.1.5 和 2.0.0)。前者安装在 /another/.path/to/ruby (“路径”之前有一个点,以模仿路径之间包含点头目录的事实),除了默认系统(版本 2.0. 0) 在/usr/bin/ruby.我使用 rbenv 安装 Ruby。
在我手动设置 PATH 环境变量后,默认的 ruby 命令将在另一个目录中找到:/another/.path/to/ruby。现在我检查
which -a ruby
它首先使用正确的 ruby 作为输出。
/another/.path/to/ruby
/usr/bin/ruby
现在我创建一个脚本 rbs,shebang 的第一行指定要使用的 ruby。
#!/usr/bin/env ruby
puts 'hey there'
然后我跑
./rbs
它输出'嘿那里'。好的。同时,Ruby 使用的是正确的版本。
/usr/bin/env ruby --version
还有
ruby --version
两者都输出 2.1.5。所以使用新版本效果很好。
但是,问题出现在此处:现在我将 rbs 文件更新为:
#!/another/.path/to/ruby
puts 'hey there'
请注意,我更新了 shebang 以使用所需 ruby 的绝对路径。然后我跑
./rbs
它输出:
./rbs: line 2: puts: command not found
这太奇怪了;
但是如果我跑了
ruby ./rbs
它正常输出“嘿,那里”。看起来 shebang 使用 /usr/bin/env ruby 可以完美运行,但不适用于新安装 ruby 的绝对路径?
这是为什么?有没有办法修复它,以便通过键入以下内容更新的脚本仍然可以工作?
./rbs
谢谢!
【问题讨论】:
-
./rubyscript在您的./rbs输出中是什么? -
抱歉,打错字了。我会更新它。它只是 ./rbs 文件。
-
/another/.path/to/ruby rbs工作吗?
标签: ruby environment-variables shebang