2
我已經安裝了最新的Git Bash(msysgit)。如果我創建一個名爲test.rb,內容如下一個簡單的ruby文件:ruby腳本與命令產生一個DOS shell而不是一個msysgit一個
#!/usr/bin/env ruby
puts `dir`
puts `ls -al`
運行ruby test.rb
將打印目錄第一puts
但未能找到第二puts
ls
。它顯然產生了一個DOS shell而不是一個msysgit shell。
如何指定子進程應該在msysgit shell下運行?
另外,子shell應該從調用shell繼承環境變量(特別是PATH)。
[** childprocess ** gem](http://www.plugingeek.com/repos/jarib/childprocess)可能會幫助您產生自定義類型的過程。來自docs的一個例子:'process = ChildProcess.build(「ruby」,「-e」,「sleep」)' –
缺少的唯一東西可能是msys工具的PATH。如果將'ls'更改爲'ls.exe'程序的絕對路徑,它會起作用嗎? – Nick
@Nick:它產生了一個CMD shell,因此如果我用它的顯式路徑調用ls.exe,它就可以工作。不過,我在這裏使用'ls'作爲示例。我需要執行rake和ruby命令,這些命令依賴於bash .bash_profile和.profile中的設置。我不願意將它們複製爲Windows環境變量。我們的景觀必須保持多臺機器。 – Alkaline