我在Windows 7笔记本电脑上安装了多个版本的Ruby。我注意到,当我输入ruby hello.rb
与hello.rb
时,会运行不同版本的Ruby。第一个运行红宝石2.3,第二个运行红宝石2.2。我想知道为什么执行ruby的两种不同方式会运行两个不同的版本。我最终想删除ruby 2.2,但担心在不为ruby加上前缀的情况下运行ruby应用程序会失败。
查看代码输出
#!/bin/ruby
require 'tk';
where = `where ruby`; where = "where ruby:\n" + where;
ver = `ruby -v`; ver = ver[0..9];
path = ENV['PATH']; path = path[0..52];
msg = 'Hello from Ruby ' + RUBY_VERSION + ' -OR- ' + ver;
print(where + "\n" + "PATH " + path + "\n" + msg + "\n");
root = TkRoot.new {title "Hello, World!"};
TkLabel.new(root) do text msg; pack {padx 15; pady 15; side 'left'}; end
Tk.mainloop;
运行ruby hello.rb
可获得预期结果:
where ruby:
C:\Ruby23-x64\bin\ruby.exe
C:\Ruby24-x64\bin\ruby.exe
PATH C:\Ruby23-x64\bin;C:\ActiveTcl\bin;C:\Ruby24-x64\bin;
Hello from Ruby 2.3.3 -OR- ruby 2.3.3
从提示符处运行hello.rb
会产生意外的结果。请注意,ruby2.2.6
中甚至没有PATH
。
where ruby:
C:\Ruby23-x64\bin\ruby.exe
C:\Ruby24-x64\bin\ruby.exe
PATH C:\Ruby23-x64\bin;C:\ActiveTcl\bin;C:\Ruby24-x64\bin;
Hello from Ruby 2.2.6 -OR- ruby 2.3.3