C# 从.NET执行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

我正试图从.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:\>"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