4

我们需要支持提供 Unix 和 Win32 端口的旧版应用程序。不幸的是,在游戏后期,很多胶水代码都是用 ksh 脚本编写的,只针对 unix 端口,而 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)。有什么线索吗?

4

2 回答 2

4

Cygwin 幸运地用 mksh 替换了 pdksh(自 1999 年以来就死了)。然而,mksh *不* 支持非 POSIX 路径,因为它主要是一个 BSD Unix shell,它的优势之一是在所有平台上都一样。

话虽如此,Interix 中有dos2unixpathand unix2dospath(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, 其余部分不理会。

于 2012-11-08T20:23:32.320 回答
3

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

Pdksh,即“公共域 Korn Shell”,可以通过 Cygwin 的 setup.exe 安装。

于 2010-06-19T09:10:47.777 回答