0

我正在尝试在 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~
$
4

2 回答 2

0

看起来您正在使用Railsinstaller ruby​​ 二进制文件,它基本上是RubyInstaller的重新分发,捆绑了 Rails 开发的一些必需品。

但是,一切实际上都按预期工作。

Cygwin 不会使用PATHTEXT,因为它不需要。换句话说,它将调用railsbinstub 而不是rails.bat批处理文件。由于hashbangbinstubs 中有一个,cygwin 自己处理整个执行过程。

此外,RubyInstaller 发行版没有为 Cygwin 编译。所以ruby.exe不明白 Cygwin 路径的查找。这就是为什么你得到一个LoadError.

在我看来,您可能应该查看Luis Lavena 对类似问题的回答。但是,如果您真的想这样做,您可以在 Cygwin 中重新编译 Ruby 或获取 Cygwin Ruby 发行版。

于 2013-02-07T03:19:05.313 回答
0

(在使用 RailsInstaller 的 Windows 中)对我来说,唯一的方法是在安装路径中添加和别名。

alias rails='C:/RailsInstaller/Ruby1.9.3/bin/rails'

一旦我在 cygwin 终端中输入它,它就可以正常工作。

于 2013-10-02T01:50:03.170 回答