Korn-Shell für Windows 7?
Frage
Wir brauchen eine Legacy-Anwendung zu unterstützen, die eine Unix und Win32-Port zur Verfügung stellt. Leider später im Spiel, wurde nur in ksh-Skripte für die Unix-Portierung vieler Glue-Code geschrieben und die Win32-Port hat Parität verloren. Ich habe versucht, es wieder zu beleben, und ich habe einige KSH-for-Windows-Lösungen versucht (eine native Version von Zsh verwendet in der Vergangenheit an die Arbeit), aber nichts scheint richtig 7 unter Windows zu arbeiten: Cygwin weigert sich, den Einsatz Win32 und Unix-Stil Wege, so brechen einige gewundene Skripte. Gleiche Situation für SUA / SFU. UWin funktioniert nicht auf Windows 7. Die älteren nativen Ports ich Gebrauch verwendet (WinZsh) auch nicht mehr arbeiten unter 7.
Also, ich bin in der Notwendigkeit eines Korn-Shell-Arbeit-alike, die unter Win 7 funktionieren werden (64 Bit wären genial, aber ich habe die Hoffnung verloren) und die mit beiden cmd.exe-Stil Pfaden arbeiten ( c: / path / to / app) und Standard-Unix Pfade (/ path / to / APP). Irgendwelche Hinweise?
Lösung
Cygwin tut Unterstützung C: / path / to / app Stil Wege, auch wenn es über sie beschweren mag. (Einstellung CYGWIN = nodosfilewarning wird es verschlossen). Auch Pfade mit umgekehrten Schrägstriche werden unterstützt, aber sie brauchen die Schale von der Interpretation, sie zu stoppen angemessen zu zitieren.
pdksh, die "Public Domain Korn Shell" kann durch Cygwin setup.exe installiert werden.
Andere Tipps
Cygwin glücklicherweise ersetzt pdksh (tot seit 1999) mit mksh. Allerdings mksh wird * nicht * Unterstützung nicht-POSIX-Pfade, wie es ist in erster Linie ein BSD-Unix-Shell und eine seiner Stärken arbeitet das gleiche über alle Plattformen hinweg.
That being said, gibt es dos2unixpath
und unix2dospath
(IIRC) in Interix. Vielleicht können Sie sie verwenden.
So etwas könnte dies sogar Arbeit:
function dos2unixpath {
local _x=$1
[[ $_x = [A-Za-z]:[\\/]* ]] && _x=/dev/fs/${_x::1}/${_x:3}
print -r -- "${_x//\\//}"
}
Dieser wandelt x:\foo\bar
zu /dev/fs/x/foo/bar
, ..\bla
zu ../bla
und Blätter der Rest allein.