명령을 사용하여 Windows에서 배치 파일을 사용하여 Ubuntu 터미널을 열시겠습니까?

명령을 사용하여 Windows에서 배치 파일을 사용하여 Ubuntu 터미널을 열시겠습니까?

배치 파일과 퍼티를 사용하여 Windows에서 많은 프로세스를 자동화합니다.

예( login_server7.bat ):

start C:\Users\Jack\Documents\putty.exe -ssh 1.1.1.1 -l user123 -pw "bleh"

어떻게 Ubuntu 터미널을 시작하고 파일을 연 후 자동으로 명령을 실행할 수 있나요?

우분투 터미널을 수동으로 열고 명령을 입력하는 대신?

이 주제에 대해서는 다른 곳에서는 아무것도 볼 수 없습니다. 문안 인사

답변1

WSL의 실행 파일은 C:\Windows\System32\wsl.exe. Windows 명령 프롬프트에 입력하기만 하면 wsl기본 WSL 인스턴스에 로그인됩니다. 또는 wsl -h사용 가능한 모든 옵션 목록을 얻으려면 입력하세요. 배치 파일에서는 다음을 사용할 수 있습니다.

C:\Windows\System32\wsl.exe <your script or command>

또는 루트로 명령을 실행해야 하는 경우:

C:\Windows\System32\wsl.exe sudo <your script or command>

아마도 더 정확한 방법은 을 사용하는 것이지만 wsl -e -- <command>위의 방법은 나에게 좋습니다. 더 자세한 예는 다음과 같습니다.재부팅 후 WSL cron 데몬의 Ubuntu 18.04가 실행되지 않음.

답변2

ps4080의 답변에서 언급했듯이 이를 수행하는 올바른 방법은 ( wsl -e -- <command>또는 일반적으로 wsl -e <command>)입니다.

그러나 실제로 이 기술에는 몇 가지 미묘한 차이가 있을 수 있으며, 필요할 때 올바른 주문을 사용할 수 있도록 각 주문의 정확한 내용을 이해하는 것이 좋습니다.

wsl <command>

  • 현재 사용자에 대한 기본 셸을 실행합니다.
  • ... 비로그인, 비대화형 쉘로
  • ... 소유 Windows 프로세스가 전달한 디렉터리
  • <command>해당 쉘에서 실행됩니다 .

쉘에 따라 다음을 사용하여 이를 확인할 수 있습니다 wsl ps -eH.

  PID TTY          TIME CMD
    1 ?        00:00:00 init
   18 ?        00:00:00   init
   19 ?        00:00:00     init
   20 pts/0    00:00:00       fish
   28 pts/0    00:00:00         ps

bash가 기본 셸인 경우 암시 -c적인 exec.

이것이 소유한 Windows 프로세스의 디렉터리에서 실행된다는 사실은 다음과 같이 편리할 수 있습니다.

wsl ls -lh

... PowerShell에서 "사람이 읽을 수 있는" 파일 크기를 얻으려면의외로 하기 힘든그렇지 않으면.

가장 까다로운 부분은 두 번째 한정자입니다. WSL은 이런 방식으로 시작되면 셸을 비로그인, 비대화형 셸로 실행합니다. 이는 다음을 의미 ~/.bashrc합니다 ~/.bash_profile.~ 아니다시작 시 소스가 제공됩니다. 이로 인해 시작 파일에서 수행해야 하는 작업(예: 환경 변수 설정)이 필요한 명령을 실행하려고 할 때 혼란이 발생할 수 있습니다.

wsl -e <command>

  • 실행<command> ~처럼껍질
  • ... 소유 프로세스가 전달한 디렉토리

-e기본 쉘을 완전히 우회합니다 .

> wsl ps -eH
  PID TTY          TIME CMD
    1 ?        00:00:00 init
    7 ?        00:00:00   init
    8 ?        00:00:00     init
    9 pts/0    00:00:00       ps

이것은 될 수있다약간셸의 시작 오버헤드를 방지하므로 더 효율적이지만 일반적으로 걱정할 가치는 없습니다.

wsl -e bash -lic <command>

  • 셸로 실행됩니다 bash(기본 셸인지 여부에 관계 없음).
  • 및 (및/또는 기타)이 소스 가 되도록 로그인, 대화형 쉘( -li) 이 되도록 강제합니다.~/.bashrc~/.bash_profile
  • ... 소유 Windows 프로세스가 전달한 디렉터리
  • <command>해당 쉘에서 실행됩니다 .

명령에 시작 구성의 항목이 필요한 경우 사용할 버전입니다.

관련 정보