适用于Windows 7的Korn-Shell?

时间:2010-06-18 09:41:46

标签: shell windows-7 cygwin gnuwin32

我们需要支持提供Unix和Win32端口的遗留应用程序。不幸的是,在游戏的后期,很多胶水代码只用于unix端口的ksh脚本编写,而Win32端口丢失了奇偶校验。我一直在努力恢复它,我一直在尝试一些ksh-for-windows解决方案(过去曾经使用Zsh的原生版本),但在Windows 7下似乎没有任何工作:Cygwin拒绝使用Win32和unix风格的路径,所以一些复杂的脚本打破。 SUA / SFU的情况相同。 UWin在Windows 7上不起作用。我以前使用的较旧的本机端口(WinZsh)也不再在7下工作。

所以,我需要一个可以在Win 7下工作的Korn-shell工作(64位会很棒,但我已经失去了希望)并且可以使用两个cmd.exe样式的路径( c:/ path / to / app)和标准Unix路径(/ path / to / app)。有线索吗?

2 个答案:

答案 0 :(得分:4)

Cygwin幸运地用mksh替换了pdksh(自1999年以来死了)。但是,mksh *不支持非POSIX路径,因为它主要是BSD Unix shell,其优势之一是在所有平台上都能正常工作。

话虽如此,Interix中有dos2unixpathunix2dospath(IIRC)。也许你可以使用它们。

这样的事情甚至可能有效:

function dos2unixpath {
    local _x=$1
    [[ $_x = [A-Za-z]:[\\/]* ]] && _x=/dev/fs/${_x::1}/${_x:3}
    print -r -- "${_x//\\//}"
}

这会将x:\foo\bar转换为/dev/fs/x/foo/bar,将..\bla转换为../bla,然后将其余部分单独转换。

答案 1 :(得分:2)

Cygwin确实支持C:/ path / to / app样式路径,即使它喜欢抱怨它们。 (设置CYGWIN = nodosfilewarning将关闭它)。甚至支持带有反斜杠的路径,但它们需要适当的引用来阻止shell解释它们。

Pdksh,“Public Domain Korn Shell”,可以通过Cygwin的setup.exe安装。