質問

UNIXとWin32ポートを提供するレガシーアプリをサポートする必要があります。残念ながら、ゲームの後半では、UnixポートのみのKSHスクリプトで多くの接着剤コードが記述され、Win32ポートはパリティを失いました。私はそれを復活させようとしてきました、そして、私はいくつかのKSH-for-Windowsソリューション(過去には使用されていたZSHのネイティブビルド)を試していますが、Windows7:Cygwinは使用を拒否しないようですWin32とUnixスタイルの両方のパスがあるため、複雑な複雑なスクリプトが破損します。 SUA/SFUについても同じ状況。 UwinはWindows 7で動作しません。私が使用していた古いネイティブポート(Winzsh)も7歳未満では機能しません。

だから、私は勝利7の下で働くコーンシェルの仕事が必要です(64ビットは素晴らしいですが、私は希望を失いました)。 PATH/to/app)および標準のUnixパス(/path/to/app)。手がかりはありますか?

役に立ちましたか?

解決

Cygwinは、C:/Path/to/Appスタイルのパスをサポートしていますが、不平を言うのが好きです。 (Cygwinの設定= nodosfilewarningはそれを遮断します)。バックスラッシュのあるパスでさえサポートされていますが、シェルがそれらを解釈するのを止めるために適切な引用が必要です。

「パブリックドメインコーンシェル」であるPdkshは、Cygwinのセットアップを介してインストールできます。

他のヒント

Cygwinは幸運にもPDKSH(1999年以来死んでいる)をMKSHに置き換えました。しかし、Mksh 意思 * POSIX以外のパスは主にBSD UNIXシェルであり、その強みの1つがすべてのプラットフォームで同じように機能するため、Posix以外のパスをサポートしていません。

そうは言っても、あります dos2unixpathunix2dospath (IIRC)in interix。多分あなたはそれらを使用することができます。

このようなものはうまくいくかもしれません:

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, 、そして残りを放っておきます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top