我们需要支持一个提供Unix和Win32端口的旧应用程序。不幸的是,在游戏的后期,仅使用UNIX端口的KSH脚本编写了许多胶水代码,Win32端口失去了平等。我一直在努力恢复它,并且我一直在尝试一些ksh-for-windows解决方案(过去曾经工作过的ZSH的本地构建),但是在Windows 7下似乎没有任何工作正常工作:Cygwin拒绝使用Win32和Unix风格的道路都可以,因此一些令人费解的脚本打破了。 SUA/SFU的情况相同。 Uwin在Windows 7上不起作用。我以前使用的旧本机端口(Winzsh)也不再在7下工作。

因此,我需要一个Korn-shell的工作,它将在Win 7下工作(64位很棒,但我失去了希望),并且可以使用两种CMD.EXE风格的路径(C:/路径/到/app)和标准unix路径(/路径/到/应用程序)。有线索吗?

有帮助吗?

解决方案

Cygwin确实支持c:/path/to/app样式路径,即使它喜欢抱怨它们。 (设置cygwin = nodosfilewarning将其关闭)。甚至支持带有反斜线的路径,但是他们需要适当的引用以阻止外壳解释它们。

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

其他提示

Cygwin幸运地用MKSH取代了PDKSH(自1999年以来死亡)。但是,MKSH 将要 *不*支持非叠加路径,因为它主要是BSD Unix壳,并且其优势之一在所有平台上都相同。

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

这样的事情甚至可能起作用:

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, ,剩下的人独自一人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top