摘要:在 Windows 机器上,我怎样才能使 Bourne shell 成为活动的 Ruby shell?这是我想要发生的事情:
irb> exec('echo $SHELL')
/bin/sh
实际输出为:
irb> exec('echo $SHELL')
$SHELL
如果我尝试在cmd.exe
. 根据 Ruby 文档,它看起来像exec
调用检查$RUBYSHELL
和$COMSPEC
(按那个顺序?)。我已经尝试设置$RUBYSHELL
到"C:\Program Files (x86)\Git\bin\sh.exe"
我拥有、 和副本的位置sh
,但似乎都不起作用。看起来它基本上完全忽略了....../bin/sh
/sh
RUBYSHELL
为什么?:我正在使用一个 Ruby gem,它调用exec
并传递Shellwords.shelljoin
. 该调用转义字符,但仅适用于 Bourne shell。在 Windows' 下运行时cmd.exe
,它似乎对任何转义的引号字符都感到厌恶,而只是忽略它们。因此,该命令无法正确解释。我想解决我的问题的另一种方法是让我知道是否有更好的跨平台方法来执行转义命令序列,但在我看来,如果我可以制作sh
我的活动 Ruby shell,我的问题就会得到解决。