프로그래밍 방식으로 Windows 터미널에서 WSL을 시작하고 명령을 실행하는 방법

Aug 18 2020

bashWindows 터미널 내에서 배치 파일에서 Ubuntu WSL [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

지금까지 두 가지 방법을 모두 찾았습니다.

  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