2013-02-21 52 views
3

我优先使用#!/bin/env ruby来调用Ruby脚本,它允许我使用本地Ruby安装而不会与系统Ruby安装冲突。但是我怎样才能在Linux系统上启用警告?我的测试脚本:如何运行启用了env和warnings的Ruby脚本?

#!/usr/bin/env ruby -w 

FOO 

在Mac上,我得到:

[email protected]:~$ ./test.rb 
./test.rb:3: warning: possibly useless use of a constant in void context 
./test.rb:3:in `<main>': uninitialized constant FOO (NameError) 

在Linux上,我得到:

[email protected]:~$ ./test.rb 
/usr/bin/env: ruby -w: No such file or directory 
+0

我已经注意到设置'export RUBYOPT = -w'的可能性,但是我想尽量避免这种情况。 – maasha 2013-02-21 10:58:25

+0

关于ruby论坛上的主题有一个线程:http://www.ruby-forum.com/topic/96121 – maasha 2013-02-21 11:11:40

+0

更多关于env和多个参数在这里:http://stackoverflow.com/questions/4303128/how-使用多个参数与一个shebang,即 – maasha 2013-02-21 11:13:28

回答

1

我的第一个答案不能在所有系统上工作,所以这里的另一种方法:使你的第一个非注释行

$VERBOSE = true 

这是-w开关做些什么。从http://linux.die.net/man/1/ruby

-v '

--verbose' 启用详细模式。 Ruby将在开始时打印其版本,并将变量$ VERBOSE设置为true。如果此变量为true,则某些方法会打印 额外的消息。如果给出这个开关,并且 不存在其他开关,则Ruby在打印其版本后退出。

-w'在不打印版本信息的情况下启用详细模式。它将$ VERBOSE变量设置为true。

1

#!/usr/bin/env RUBYOPT=-w ruby

正如this answer建议,this answer等地

+0

哦,现在你告诉我! 3年后! ; o) – maasha 2016-05-27 18:24:10

+1

对不起,我刚刚没有看到您的问题 - 或找到答案,我只是再次寻找,这次发现两个 – ShadSterling 2016-05-27 18:43:31

+1

......显然这并不适用于所有系统,所以这里有另一种方法:让你的第一个非注释行'$ VERBOSE = true' – ShadSterling 2016-07-01 14:55:28