2016-05-05 4 views
4

私はGit Bash for Windowsを使っています(いくつかのディレクトリを右クリックし、コンテキストメニューから "Git Bash here"を選択します)。 Node.js v5.10.1。入力引数が "https://example.comは" 2リテラル前方のスラッシュを持っているかGit Bash for WindowsのNode.jsにリテラルスラッシュをどのように渡しますか?

$ node example.js "https://example.com" 
[ 'C:\\...\\node.exe', 
    'C:\\...\\example.js', 
    'https:\\example.com' ] 

お知らせ:

console.log(process.argv); 

ここに私のコマンドラインと出力です:

は、ここに私の完全なNode.jsのスクリプト、example.jsですですが、結果の文字列「https:\\ example.com」はのリテラルのバックスラッシュです。

バックスラッシュエスケープ(例:「https:\\/example.com」)または追加のスラッシュ(例:「https:////////example.com」)が発生しないようにしました。結果はです。常にリテラルのバックスラッシュです。

同じNode.js実行ファイルを使用して、通常のWindows cmd.exeウィンドウから同じスクリプトを実行しても、この動作は発生しません。同等のPythonスクリプトをGit Bash for Windows でも実行すると、はこの動作を起こしません。

更新

ウォッチこの:

$ node.exe -e "console.log(process.argv)" "https://example.com" 
[ 'C:\\...\\node.exe', 
    'https://example.com' ] 

$ node -e "console.log(process.argv)" "https://example.com" 
[ 'C:\\...\\node.exe', 
    'https:\\example.com' ] 

はなぜスラッシュが逆になり、コールの終わりから ".EXE" 削除しますか? NVM 1.1.0を使用しています(該当する場合)。 which node.exewhich nodeは両方とも同じ結果を返します。どちらもそのEXEファイルを指しています。そのディレクトリには別のファイルnodeはありません。これは、Node.js 5.10.1とNode.js 6.0.0の両方で発生します。

+0

ノード6.0.0とgit bashのWindowsでテストされています。 'node.exe -e 'console.log(process.argv)' http:// example.com'' – andlrc

+0

これは私の環境に問題があるかもしれないと思います。断続的です。 – qntm

+0

私が提供したコマンドを実行するとどうなりますか? – andlrc

答えて

0

Git Bashは、MinGWのように "POSIX path conversion"を実行するMSYS2をベースにしています。この変換windows-ifysパスは、Windowsのような実行可能ファイルを呼び出すときにスラッシュをつけます。 MSYS2は、MinGWとは異なる方法で、いくつかの「Windowsのような」検出を行っているかもしれません。

コメントに記載されているjoezen777は、a solutionを指します:;https:;http:MSYS2_ARG_CONV_EXCLを追加してください。ドキュメントはhttps://github.com/msys2/msys2/wiki/Portingにあります。

関連する問題