C# 从.NET执行Cygwin进程?
我正试图从.NET应用程序启动ruby.exe的Cygwin版本,但我被卡住了C# 从.NET执行Cygwin进程?,c#,.net,ruby,process,cygwin,C#,.net,Ruby,Process,Cygwin,我正试图从.NET应用程序启动ruby.exe的Cygwin版本,但我被卡住了 c:\>"c:\cygwin\bin\ruby.exe" c:\test\ruby.rb /usr/bin/ruby: no such file to load -- ubygems (LoadError) 正如您所看到的,Ruby找不到库,因为它正在寻找一些Linux风格的路径 显然,当我从.NET运行ruby.exe时,因为它找不到库,所以会像上面那样失败 如果我不加载任何库,它可以正常工作: c:\&g
c:\>"c:\cygwin\bin\ruby.exe" c:\test\ruby.rb
/usr/bin/ruby: no such file to load -- ubygems (LoadError)
正如您所看到的,Ruby找不到库,因为它正在寻找一些Linux风格的路径
显然,当我从.NET运行ruby.exe时,因为它找不到库,所以会像上面那样失败
如果我不加载任何库,它可以正常工作:
c:\>"c:\cygwin\bin\ruby.exe" -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
最初,cygwin以这个cygwin.bat开头
chdir C:\cygwin\bin
bash --login -i
如何使.NET先进入cygwin环境,然后在该环境中执行ruby
- 我不能使用Windows Ruby,我需要使用cygwin Ruby
- 我知道交互式驾驶“bash”的潜在用途,但这听起来很肮脏,除非有好的方法
- 为什么不执行一个从.NET应用程序运行ruby的非交互式bash shell呢?比如:
bash --login -c <your-path-to-ruby> <your-library-to-load>
查看以了解更多信息。您是否正在混合使用本机Windows rubygems和Cygwin ruby?使用Cygwin rubygems对我来说似乎很好。(为什么你的Cygwin ruby解释器显然在搜索带有Windows反斜杠的路径?) 或者,您是否尝试过
run.exe
C:\cygwin\bin\run.exe -p /starting/dir exe_to_run
以下是手册页条目:
名字
使用隐藏的控制台窗口运行-启动程序
概要
运行[-p path]命令[-wait]参数
runcommand[-p路径][等待]参数
描述
Windows程序是GUI程序或控制台程序。什么时候
已启动的控制台程序将连接到现有控制台
或者创建一个新的。GUI程序永远不能连接到现有con-
鞋底无法附加到现有控制台,但在以下情况下将其隐藏
作为GUI程序启动
run会帮你的。它作为中间人工作,并启动专业程序-
但使控制台窗口隐藏
使用-p path,可以将path添加到path环境变量中
将-wait作为第一个程序参数发出将使run等待程序
完成,否则会立即返回
第二个变体用于创建包装器。如果可执行文件是
名为runcommand(例如runemacs)的run将尝试启动程序(例如
emacs)
例子
运行-p/usr/X11R6/bin xterm
运行emacs-等待
runemacs-等待
运行make-wait
尝试了一个完全相同的问题。给出这个错误:rb/usr/bin/ruby:没有这样的文件要加载--ubygems(LoadError),如果你从一个交互式bash shell中键入完全相同的命令(在-c后面的东西),你会得到…?实际上很奇怪,除非我从cygwin shell启动cygwin,否则即使我执行“bash--login-I”,它也不会工作我猜cygwin的bash不够聪明,无法理解没有cygwin shell的文件系统。。。
C:\cygwin\bin\run.exe -p /starting/dir exe_to_run