[英]ruby -e 'puts “something”' does not output anything on Mac OS X
這就是在Debian機器上發生的情況
$ ruby -e 'puts "something"'
something
$
這是我所期望的。
但是,當我在Mac(OS X 10.7.3)上運行相同命令時,
1.9.3-p125-perf $ ruby -e "puts 'something'"
1.9.3-p125-perf $ ruby -e "print 'something'"
1.9.3-p125-perf $ rbenv shell 1.8.7-p358
1.8.7-p358 $ ruby -e "puts 'something'"
1.8.7-p358 $ ruby -e "print 'something'"
nil1.8.7-p358 $ rbenv shell system
system $ ruby -e "puts 'something'"
system $ ruby -e "print 'something'"
nilsystem $
有誰知道這是怎么回事,以及我如何讓紅寶石再次輸出有意義的東西?
我的Ruby版本:
1.9.3-p125-perf: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
1.8.7-p358: ruby 1.8.7 (2012-02-08 patchlevel 358) [i686-darwin11.3.0]
系統: ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
腳本或IRB可以正常工作,管道紅寶石也可以工作:
1.9.3-p125-perf $ cat | ruby
puts "foo"
^D
foo
只是ruby -e
表現得時髦。 這也發生在我的girlfirends Mac上。 她使用RVM。
我找到了罪魁禍首。 我使用的是舊版本的bundler-exec 。
bundler-exec
為預定義的命令列表創建shell別名,並將其包裝在此函數中:
run-with-bundler()
{
if bundler-installed && within-bundled-project; then
bundle exec "$@"
else
"$@"
fi
}
我所使用的版本缺少$@
引號,從而導致ruby行為異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.