WSL Bash cmd.exe 挙動 検証

WSL Bashからcmd.exeを実行した際の挙動についての検証

Windows上でのLinux WSL Bashにおいて、WSL Bashからcmd.exeを実行した際の挙動についての検証について紹介します。

Shou Arisaka
2 分で読める
2019年5月9日

Windows上でのLinux WSL Bashにおいて、WSL Bashからcmd.exeを実行した際の挙動についての検証について紹介します。

  • 最初のcdしか実行されない
``` cmd.exe - <
  • 2つとも実行される
  • ``` cmd.exe - <
  • なぜかエラーになる
  • ``` cmd.exe - <
    C:\Users\ifgm2>set ATOM_HOME=C:\.atoms\.atom & atom
    net.js:200
        this._handle.open(options.fd);
                     ^
    
    Error: EINVAL: invalid argument, uv_pipe_open
        at new Socket (net.js:200:18)
        at createWritableStdioStream (internal/process/stdio.js:164:16)
        at process.getStdout [as stdout] (internal/process/stdio.js:14:14)
        at console.js:246:38
        at NativeModule.compile (bootstrap_node.js:596:7)
        at Function.NativeModule.require (bootstrap_node.js:541:18)
        at setupGlobalConsole (bootstrap_node.js:310:41)
        at startup (bootstrap_node.js:70:7)
        at bootstrap_node.js:608:3
    • 最初のコマンドのみ実行される
    ``` cmd.exe - <
  • 2つとも実行される
  • ``` cmd.exe /C "cd & cd" ```
    • 何も出力されず実行もされない
    ``` cmd.exe /C <<'EOT' cd cd EOT ```
    • 何も出力されず実行もされない
    ``` cmd.exe /C <<'EOT' set ATOM_HOME=C:.atoms.atom02 atom EOT ```
    • 何も出力されず実行もされない
    ``` cmd.exe /C <<'EOT' set ATOM_HOME=C:.atoms.atom02 & atom EOT ```
    • 2つとも実行される
    ``` cmd.exe /C 'set ATOM_HOME=C:.atoms.atom02 & atom' ``` ## batchファイルの検証 ``` cat > hoge.bat cd cd ```
    • プロンプトにログインする
    ``` cmd.exe hoge.bat ```
    • エラーになる(バグ)
    ``` cmd.exe /C hoge.bat ``` ``` 'hoge.bat' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ``` [Execute Batch file in Windows Subsystem for Linux - Stack Overflow](https://stackoverflow.com/questions/48582952/execute-batch-file-in-windows-subsystem-for-linux) ## 結論 複数のコマンドを実行したい場合は、バッチファイルやヒアドキュメントを使用せず、&で連結して記述する。 e.g. cmd.exe /C 'set ATOM_HOME=C:\.atoms\.atom02 & atom'

    batch file - How do I run two commands in one line in Windows CMD? - Stack Overflow

    この記事をシェア

    Shou Arisaka 2019年5月9日

    🔗 リンクをコピー