プログラムでWindowsターミナルでWSLを起動し、コマンドを実行する方法

Aug 18 2020

bashバッチファイルからWindowsターミナル内でUbuntuWSL [shell:]を起動し、起動後すぐに実行されるコマンドを渡したいと思います。

  • WSLを直接起動するときは、-c引数を使用してこれを行うことができます。たとえば、以下はWSLを開き、いくつかのローカルポートフォワーディングとのSSH接続を確立します。
    bash -c "ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]"
    

Windowsターミナルを使用してこれをどのように達成しますか?

回答

1 suamikim Aug 18 2020 at 22:19

私は2つの方法を見つけましたが、どちらもこれまでのところ機能しています。

  1. 専用プロファイルを作成する:
    このcommandlineオプションは、起動時にシェルに直接渡される引数も受け入れwsl.exe、追加の「起動コマンド」で直接使用できるようにします。
    {
      "guid": "{...}",
      "hidden": false,
      "name": "Ubuntu SSH",
      "commandline": "wsl.exe ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]",
    }
    
    これで、以下を使用して実行されるバッチファイルを介してシェルを起動できます。ただし、欠点は、新しいプロファイルがWindowsターミナルのプロファイル選択メニューに表示されることです。
    wt -p "Ubuntu SSH"
    

  2. パスcommandlinewt
    オプション1に示すように、オプションcommandlineにはターゲットシェルのパラメーターを追加でき、バッチファイルから呼び出されると次のように機能します。
    wt wsl.exe ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]
    
    これが機能する理由を説明し、この回答の提案を調整する公式のオンラインリソースは見つかりませんでした。したがって、これがこのように機能することになっているのか、将来のバージョンで機能しなくなる可能性のある非表示/意図的でない機能なのかわかりません。
harrymc Aug 18 2020 at 16:57

エラーメッセージは正しいです:Windowsターミナルには-cパラメータがありません。

構文は次のとおりです。

wt [options] [command ; ]

唯一のオプションは次のとおりです。

  -h,--help                   Print this help message and exit
  -v,--version                Display the application version
  -M,--maximized Excludes: --fullscreen
                              Launch the window maximized
  -F,--fullscreen Excludes: --maximized
                              Launch the window in fullscreen mode
  -p                          Profile
  -d                          Directory