我们需要支持提供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)。有线索吗?
答案 0 :(得分:4)
Cygwin幸运地用mksh替换了pdksh(自1999年以来死了)。但是,mksh 将 *不支持非POSIX路径,因为它主要是BSD Unix shell,其优势之一是在所有平台上都能正常工作。
话虽如此,Interix中有dos2unixpath
和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
,然后将其余部分单独转换。
答案 1 :(得分:2)
Cygwin确实支持C:/ path / to / app样式路径,即使它喜欢抱怨它们。 (设置CYGWIN = nodosfilewarning将关闭它)。甚至支持带有反斜杠的路径,但它们需要适当的引用来阻止shell解释它们。
Pdksh,“Public Domain Korn Shell”,可以通过Cygwin的setup.exe安装。