在Windows控制台里直接用Cygwin的命令。
虽然个人很喜欢基于Unix的系统,比如Linux和Mac OSX, 但工作的时候还是不得不用Windows,Windows在商业应用上的压倒优势还是毋庸置疑的。有的时候,我还是很舍不得Unix下那些非常好的命令行工具,和Unix比起来Windows的命令行简直就是鸡肋。要是能把Unix的命令行工具放到Windows里用该有多好啊!其实,早就有人想到了这个,cygwin就是其中最有名的,我个人认为也是最好的。安装了cygwin以后,几乎所有的Unix命令行工具都可以在Windows里使用了。
但是,还是有一点儿缺憾,当你想使用Unix命令的时候,必须单独启动Cygwin,这时候还想同时用用Windows的命令,就不得不再开一个Windows命令行窗口。还是有点儿麻烦。有没有解决办法呢?
有,还特简单。如果你学过Java,就应该知道在Windows安装Java以后需要设置环境变量吧。对,只要把cygwin.exe文件也加到环境变量里,就可以在Windows的命令行窗口里同时使用Windows和Unix的命令了。就这么简单。
步骤如下:
假设cygwin被安装在C:下面,复制cygwin的bin文件夹的全路径,比如C:\Cygwin\bin
打开”我的电脑”的属性。在”我的电脑”上点右键,选择属性。出现”系统属性”。再选择”详细设置”, 点击”环境变量”。
在环境变量里找到Path环境变量,双击打开它。
在一行的最后加一个”;”号,这是用来区别不同的命令路径的,然后把刚才复制的Cygwin路径(C:\Cygwin\bin)粘贴到”;”号后面,然后”确定”, 关闭”系统属性”窗口。
好了,搞定,赶紧试一试吧。
在Cygwin里使用Rails2.x生成项目时的一个Bug
平时除了在家里自己的Macbook上使用Textmate开发Rubyonrails程序之外,基本上都在用Windows写Rubyonrails程序。在Windows上写Rails代码真的不是什么愉快的事儿。虽然有NetBeans这样的IDE,但它中文和日文支持的还不是那么尽善尽美。所以,我一直都用Cygwin + GVim即Rails插件来写Rails。虽然在Cygwin里Ruby速度慢一点儿,但习惯GVim以后,基本不用碰鼠标的感觉真的是不错。
可是刚才遇到了一个小问题。就是在Cygwin里不能生成Rails项目了。如果执行Rails myproject来生成项目,就会出现下面的错误:
$ rails myproject
No such file or directory – /dev/urandom
这个问题很奇怪,/dev/urandom是Unix的一个系统级别的随机数生成器,Cygwin里有没有就清楚了。为了尽快解决问题,Google了一下。解决方法倒是很简单,不过真的很出人意料。
只需在/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/rails_generator/secret_key_generator.rb文件的第86行加上一句话:
puts “Before Read”
就可以了。这也太奇怪了。于是继续查原因。在Rails Trac里有人提交了Bug,但结论大概是说这不是Rubyorails和Cygwin的问题,而是Ruby1.8.6的Bug。

