我正在尝试在Cygwin下运行Rails,但是当我键入“rails -v”时,它会找到“rails”并抛出错误。当我输入“rails.bat -v”时它工作得很好。在本机Windows命令处理器中工作正常,因为它使用PATHEXT来识别可执行文件,如.BAT。
我在.bash_profile中添加了一行,如下所示,据我所知,它正在设置变量。
export PATHEXT=".RB;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
这是我的输出:
$ echo $PATH
/usr/local/bin:/usr/bin:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Program Files (x86)/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Program Files/WIDCOMM/Bluetooth Software:/cygdrive/c/Program Files/WIDCOMM/Bluetooth Software/syswow64:/cygdrive/c/Program Files (x86)/Windows Live/Shared:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files/Microsoft Windows Performance Toolkit:/cygdrive/c/Program Files (x86)/QuickTime/QTSystem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/Microsoft/Web Platform Installer:/cygdrive/c/Program Files/7-Zip:/cygdrive/d/sysinternals:/cygdrive/d/batch:/cygdrive/d/Program Files/Sublime Text 2:/cygdrive/d/RailsInstaller/Ruby1.9.3/bin:/cygdrive/d/RailsInstaller/Git/cmd:/cygdrive/d/RailsInstaller/Git/bin:/usr/bin:/cygdrive/d/batch
18:54~
$ echo $PATHEXT
.RB;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
18:54~
$ which rails
/cygdrive/d/RailsInstaller/Ruby1.9.3/bin/rails
18:54~
$ which rails.bat
/cygdrive/d/RailsInstaller/Ruby1.9.3/bin/rails.bat
18:55~
$ rails -v
D:\RailsInstaller\Ruby1.9.3\bin\ruby.exe: No such file or directory -- /cygdrive/d/RailsInstaller/Ruby1.9.3/bin/rails (LoadError)
18:55~
$ rails.bat -v
Rails 3.2.11
18:55~
$
答案 0 :(得分:0)
看起来你正在使用Railsinstaller ruby二进制文件,它基本上是RubyInstaller的重新分发,其中包含了捆绑Rails开发的一些基本功能。
然而,一切实际上都按预期工作。
Cygwin不会使用PATHTEXT
,因为它不需要。换句话说,它将调用rails
binstub而不是rails.bat
批处理文件。由于binstubs中有hashbang
,因此cygwin会处理整个执行过程。
此外,没有为Cygwin编译RubyInstaller发行版。因此ruby.exe
无法理解Cygwin路径的查找。这就是你获得LoadError
的原因。
在我看来,您应该查看this answer by Luis Lavena to a similar question。但是,如果你真的想,你可以在Cygwin中重新编译Ruby或者获得Cygwin Ruby发行版。
答案 1 :(得分:0)
(在使用RailsInstaller的Windows中)对我来说唯一的方法是对安装路径添加和别名。
alias rails='C:/RailsInstaller/Ruby1.9.3/bin/rails'
一旦我在cygwin终端输入,它就可以正常工作。