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