Корн-Шелл для Windows 7? - PullRequest
4 голосов
/ 18 июня 2010

Нам нужно поддерживать унаследованное приложение с портом Unix и Win32. К сожалению, позже в игре много скриптов было написано в сценариях ksh только для порта unix, и порт 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: / path / to / app) и стандартные пути Unix (/ path / to / app). Любые подсказки?

Ответы [ 2 ]

4 голосов
/ 09 ноября 2012

Кигвин, к счастью, заменил pdksh (умер с 1999 года) на mksh.Тем не менее, mksh будет * не * поддерживать не-POSIX-пути, поскольку это, прежде всего, оболочка BSD Unix, и одна из его сильных сторон работает одинаково на всех платформах.в 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 и оставляет остальныеодин.

2 голосов
/ 19 июня 2010

Cygwin поддерживает пути в стиле C: / path / to / app, хотя ему нравится жаловаться на них.(Настройка CYGWIN = nodosfilewarning отключит его).Поддерживаются даже пути с обратными слешами, но для их интерпретации требуется соответствующая кавычка.

Pdksh, «Public Domain Korn Shell», можно установить через setup.exe Cygwin.

...