Domanda

Abbiamo bisogno di sostenere un'applicazione legacy che fornisce un sistema Unix e una porta Win32. Purtroppo, più avanti nel gioco, un sacco di codice collante è stato scritto in script ksh per solo la porta UNIX, e il porto Win32 ha perso la parità. Ho cercato di far rivivere, e ho cercato alcune soluzioni ksh-per-finestre (una build nativo di Zsh usato per lavorare in passato), ma nulla sembra funzionare correttamente in Windows 7: Cygwin rifiuta di utilizzo sia Win32 e percorsi di tipo UNIX, in modo da alcuni script contorti rompono. Stessa situazione per SUA / SFU. UWin non funziona su Windows 7. Le porte native più anziani che ho utilizzato (WinZsh) opera anche non è più sotto 7.

Così, ho bisogno di un Korn-shell lavoro-alike che funziona con Win 7 (64 bit sarebbe fantastico, ma ho perso la speranza), e che può lavorare con entrambi i percorsi cmd.exe in stile ( c: / path / to / app) e percorsi Unix standard (/ path / to / app). Eventuali indizi?

È stato utile?

Soluzione

Cygwin fa supporto C: percorsi di stile percorso / / a / app, anche se ama lamentarsi di loro. (Impostazione CYGWIN = nodosfilewarning si spegnerà in su). Sono supportati percorsi anche con barre inverse, ma necessitano di un'adeguata citare per fermare il guscio da loro interpretazione.

pdksh, il "Public Domain Korn Shell", può essere installato tramite setup.exe di Cygwin.

Altri suggerimenti

Cygwin per fortuna sostituito pdksh (morto nel 1999) con mksh. Tuttavia, mksh * non * supporto percorsi non POSIX, in quanto è in primo luogo una shell Unix BSD, e uno dei suoi punti di forza sta lavorando lo stesso per tutte le piattaforme.

Detto questo, non c'è dos2unixpath e unix2dospath (IIRC) in Interix. Forse si possono usare.

Una cosa del genere potrebbe anche lavoro:

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

Questo trasforma x:\foo\bar a /dev/fs/x/foo/bar, ..\bla a ../bla, e lascia il resto da solo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top