WSL을 사용하여 cmd.exe에서 명령 실행

WSL을 사용하여 cmd.exe에서 명령 실행

나는 여기서 같은 문제에 직면하고 있습니다.cmd.exe(WSL)에서 bash로 명령 전달이 작동하지 않습니다.

그러나 나에게는 그 해결책도 효과가 없었습니다.

WSL을 설치하고 cmd.exe를 통해 "bet"이라는 명령을 실행해 보았습니다.

  1. cmd.exe 열기
  2. 유형bash -c -i "bet"

오류가 발생합니다.

Command 'bet' not found, did you mean:

  command 'bget' from deb ax25-tools (0.0.10-rc4-3build1)
  command 'bst' from deb buildstream (1.4.1-1)
  command 'beet' from deb beets (1.4.9-4)
  command 'btt' from deb blktrace (1.2.0-5)
  command 'bat' from deb bacula-console-qt (9.4.2-2ubuntu5)
  command 'ben' from deb ben (0.9.0ubuntu2)
  command 'fet' from deb fet (5.42.2-2build1)
  command 'eet' from deb libeet-bin (1.23.3-8)
  command 'net' from deb samba-common-bin (2:4.13.17~dfsg-0ubuntu1.20.04.1)

Try: sudo apt install <deb name>

cmd.exe를 열고 bash를 입력한 다음 Linux 명령줄에 "bet"을 입력하여 이 작업을 수행하려고 하면 제대로 작동합니다.

나 역시 이 일을 시도해 보았지만, wsl -e "bet"그것 역시 내가 하고 싶은 일을 성취하지 못합니다. (bet 명령어는 제가 마지막에 추가한 추가 파라미터를 받았으나 명령어가 실행되지 않습니다. Linux 쉘에서 직접 bet를 실행하면 명령어가 실행됩니다.)

참고: Bet은 FSL과 함께 제공되는 두뇌 추출 도구입니다(https://fsl.fmrib.ox.ac.uk/fsl/fslwiki)

답변1

나는 Windows와 Windows에 대해 아무것도 모르기 때문에 cmd.exe이 답변에서는 Unix 환경을 가정합니다. 대부분의 사용자의 관점에서 보면 WSL은 Unix 환경입니다.

이것이 사용법에 관한 질문인 경우 cmd.exe질문은 다음에서 더 적절한 청중을 찾을 수 있습니다.슈퍼유저 웹사이트.

bet문제는 실행 파일의 경로가 실행 중인 비대화형 셸의 검색 경로에 없는 것 같습니다 .

여러 가지 솔루션이 있습니다.

  1. 실행 파일의 정확한 경로 이름을 사용하십시오.

    bash -c '/usr/local/fsl/bin/bet'
    
  2. 다음을 호출하기 전에 스크립트 내의 변수 값을 변경하십시오 PATH.bash -cbet

    bash -c 'PATH=$PATH:/usr/local/fsl/bin; bet'
    
  3. PATH명령을 시작할 때 환경 변수에 적절한 디렉터리 경로를 추가합니다 bash -c. 이 작업은 다음 방법 중 하나로 수행할 수 있습니다.

    PATH=$PATH:/usr/local/fsl/bin bash -c bet
    
    env PATH="$PATH:/usr/local/fsl/bin" bash -c bet
    
  4. PATH현재 쉘의 환경을 수정하여 환경 변수에 적절한 디렉토리 경로를 추가하십시오. 이는 쉘의 시작 파일(보통 쉘 ~/.bash_profile의 경우 bash)에 다음을 추가하여 수행할 수 있습니다.

    PATH=$PATH:/usr/local/fsl/bin
    

    이는 다음에 쉘 세션에 로그인할 때 적용됩니다. 그런 다음 사용

    bash -c bet
    
  5. 질문에 명령을 -i실행할 bash -c때 옵션을 포함 할 수도 있습니다. 이렇게 하면 셸이 대화형으로 바뀌고 ~/.bashrc파일이 구문 분석됩니다. 그래서 또 다른 옵션은

    PATH=$PATH:/usr/local/fsl/bin
    

    하지만 이 ~/.bashrc파일의 목적은 부팅할 때마다 실행하고 싶지 않은 명령 실행을 포함할 수 있는 대화형 작업을 위한 셸을 설정하는 것입니다 bet. 대안으로 위의 변수 할당을 완전히 새로운 파일에 추가한 다음 다음 bash에서 복사 할 수 있습니다.

    bash -i --rcfile envfile -c bet
    

    ... envfile새 파일이 있는 곳입니다.

  6. 파일에 이전 지점에서 언급한 배포판이 있는 경우 bash다음 중 하나를 수행하여 시작할 수 있습니다.

    BASH_ENV=envfile bash -c bet
    
    env BASH_ENV="envfile" bash -c bet
    

    bash이렇게 하면 대화형 셸로 실행 하지 않아도 됩니다 ( ~/.bashrc대화형 모드에서 셸을 실행하면 작업 제어 활성화와 같이 기본적으로 구문 분석하는 것 외에도 셸에 다른 영향을 미칩니다).

관련 정보