Comment démarrer WSL dans le terminal Windows par programme et exécuter la commande

Aug 18 2020

Je voudrais démarrer Ubuntu WSL [shell: bash] à l'intérieur du terminal Windows à partir d'un fichier batch et passer une commande, qui devrait s'exécuter immédiatement après le démarrage.

  • Lors du démarrage direct de WSL, je suis capable de le faire en utilisant l' -cargument; Par exemple, ce qui suit ouvre WSL et établit une connexion SSH avec certaines redirections de port locales:
    bash -c "ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]"
    

Comment pourrais-je y parvenir en utilisant Windows Terminal?

Réponses

1 suamikim Aug 18 2020 at 22:19

J'ai trouvé deux moyens, les deux fonctionnant jusqu'à présent:

  1. Créer un profil dédié:
    L' commandlineoption accepte également les arguments, qui sont directement passés au shell au démarrage, permettant l'utilisation directe de wsl.exeavec une "commande de démarrage" supplémentaire:
    {
      "guid": "{...}",
      "hidden": false,
      "name": "Ubuntu SSH",
      "commandline": "wsl.exe ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]",
    }
    
    Je peux maintenant démarrer le shell via un fichier batch, qui fonctionne en utilisant le ci-dessous; cependant, l'inconvénient est que le nouveau profil est affiché dans le menu de sélection de profil du terminal Windows :
    wt -p "Ubuntu SSH"
    

  2. Passer commandlineà wt:
    comme indiqué dans l'option 1, l' commandlineoption peut inclure d'autres paramètres pour le shell cible, les éléments suivants fonctionnant lorsqu'ils sont appelés à partir d'un fichier de commandes:
    wt wsl.exe ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]
    
    Je n'ai trouvé aucune ressource en ligne officielle expliquant pourquoi cela fonctionne, ajustant les suggestions de cette réponse , donc je ne suis pas sûr que cela soit censé fonctionner de cette façon ou si c'est une fonctionnalité cachée / involontaire qui pourrait casser dans les versions futures.
harrymc Aug 18 2020 at 16:57

Le message d'erreur est correct: le terminal Windows n'a pas de -cparamètre.

La syntaxe est:

wt [options] [command ; ]

Où les seules options sont:

  -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