Pregunta

Tenemos que apoyar una aplicación de legado que proporciona un Unix y un puerto de Win32. Por desgracia, más tarde en el juego, una gran cantidad de código de unión fue escrito en los scripts ksh para sólo el puerto de Unix, y el puerto de Win32 ha perdido la paridad. He estado tratando de revivirlo, y yo he estado tratando algunas soluciones ksh-para-ventanas (una acumulación natural de Zsh solía trabajar en el pasado), pero nada parece funcionar correctamente en Windows 7: Cygwin se niega a usar ambos caminos de tipo Unix y Win32, por lo que algunos scripts contorneados rompen. La misma situación para SUA / SFU. UWin no funciona en Windows 7. Los puertos nativos de edad avanzada que utiliza para su uso (WinZsh) trabajo también ya no está bajo 7.

Por lo tanto, estoy en necesidad de un Korn shell-trabajo-igual que funcionará bajo Windows 7 (64 bits sería impresionante, pero no tengo esperanza perdida) y que puede trabajar con los caminos de estilo cmd.exe ( c: / ruta / a / app) y caminos Unix estándar (/ ruta / a / aplicación). ¿Alguna pista?

¿Fue útil?

Solución

Cygwin hace de soporte C: ruta / / a / app caminos estilo, a pesar de que le gusta quejarse de ellos. (Configuración CYGWIN = nodosfilewarning se encerrará otra vez). Incluso con sendas barras invertidas son compatibles, pero necesitan apropiadas citando a detener el shell interprete ellos.

pdksh, el "Korn Shell dominio público", se puede instalar a través de Cygwin setup.exe.

Otros consejos

Cygwin suerte reemplazado pdksh (muertos desde 1999) con mksh. Sin embargo, mksh * no * es compatible con rutas no POSIX, ya que es principalmente un shell de Unix BSD, y uno de sus puntos fuertes está trabajando el mismo en todas las plataformas.

Una vez dicho esto, hay dos2unixpath y unix2dospath (IIRC) en Interix. Tal vez usted puede usarlos.

Algo como esto puede ser que incluso el trabajo:

function dos2unixpath {
    local _x=$1
    [[ $_x = [A-Za-z]:[\\/]* ]] && _x=/dev/fs/${_x::1}/${_x:3}
    print -r -- "${_x//\\//}"
}

Esto convierte x:\foo\bar a /dev/fs/x/foo/bar, ..\bla a ../bla, y deja el resto solo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top