Korn-Shell для Windows 7?
Вопрос
Нам нужно поддержать устаревшее приложение, которое предоставляет Unix и порт Win32. К сожалению, позже в игре много клеевого кода было написано в KSH Scripts только для порта UNIX, а порт Win32 потерял четность. Я пытался его возродить, и я пробую несколько решений KSH-для Windows (родная сборка ZSH, используемая для работы в прошлом), но ничто не работает должным образом под Windows 7: Cygwin отказывается использовать Как Win32, так и Unix-стильные пути, поэтому некоторые извилистые скрипты нарушаются. Та же ситуация для SUA / SFU. UWIN не работает на Windows 7. Старые родные порты, которые я использовал для использования (Winzsh), также больше не работает до 7 лет.
Итак, я нуждаюсь в работе Korn-Shell, который будет работать под Win 7 (64 бита будет потрясающе, но я потерял надежду) и который может работать с путями Cmd.exe-стиля (C: / Путь / к / приложение) и стандартные пути UNIX (/ путь / к / приложение). Любые подсказки?
Решение
Cygwin поддерживает C: / Путь / к / к / приложения Пути стиля, хотя он любит жаловаться на них. (Установка Cygwin = Nodosfilewarning задержит его). Даже пути с обратной косами поддерживаются, но им нужна соответствующая цитата, чтобы остановить оболочку от интерпретации их.
PDKSH, «Public Domain Korn Shell», можно установить через setup.exe cygwin.
Другие советы
Cygwin, к счастью, заменил pdksh (погибших с 1999 года) с МКШ. Тем не менее, МКШ. буду * Не * Поддержка несовремовых путей, так как в основном это оболочка BSD Unix, а одна из его сильных сторон работает совпадает с всеми такими же на всех платформах.
Что говорится, есть 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
, и покидает остальные в одиночку.