답변:
오류 메시지는 설치하지 않았 bash
거나 설치되어 있지 않다는 것을 나타냅니다 PATH
.
구글에서 가장 인기있는 것은 http://win-bash.sourceforge.net/ 이지만 대부분의 Bash 스크립트는 유닉스 계열 환경을 기대한다는 것을 이해해야한다. 따라서 Bash를 설치하면이 특정 사용 시나리오를 위해 특별히 설계된 경우가 아니라면 인터넷에서 찾은 스크립트를 실행할 수 없을 것입니다. 이에 대한 일반적인 해결책은 https://www.cygwin.com/ 이지만 달성하고자하는 것이 무엇인지에 따라 가능한 대안이 많이 있습니다.
Windows가 사용 시나리오의 중심이 아닌 경우 무료 OS (가상화)를 설치하는 것이 가장 간단한 방법 일 수 있습니다.
두 번째 오류 메시지는 Windows가 명목상 슬래시를 디렉토리 구분 기호로 허용하지만이 문맥에서는 스위치 구분 기호로 해석되기 때문입니다. 즉, Windows는 명령 줄을 다음과 같이 구문 분석합니다 app /build /build.sh
(또는 Unix 옵션 규칙을 사용 하여 구문 분석 app --build --build.sh
). 시도 할 수는 app\build\build.sh
있지만 위에서 설명한 상황으로 인해 작동하지 않을 수 있습니다.
설치 GIT를 . GIT를 설치하는 동안 옵션을 선택하여 창 컨텍스트 메뉴에 GIT Bash를 추가하십시오. 설치 후 폴더를 마우스 오른쪽 버튼으로 클릭하고 GIT Bash Here
(첨부 된 그림 참조) sh 명령을 사용하십시오 (예 :
sh test.sh
sh.exe
. 제 경우에는 : c:\Program Files\Git\bin
. 그런 다음 sh .\script.sh
PowerShell에서 실행
ctrl-ins
와shift-ins
.sh 파일 을 실행하는 가장 일반적인 방법 은 sh 명령을 사용하는 것입니다 .
C:\>sh my-script-test.sh
에 에 있습니다 :Windows
home
C:\cygwin64\home\[user]
예를 들어 bash 명령을 my-script-test.sh
사용하여 파일을 다음 과 같이 실행합니다.
jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh
sh
Windows 에서 명령을 받지 못할 것 입니다.
sh
임의의 Windows 명령 프롬프트 에서 입력 하여 작동 할 것으로 예상되는 것처럼 답변이 표시됩니다 .
sh
명령은 'Bash 설치'설치 옵션을 선택하면 Git4Windows와 함께 설치됩니다.
Windows 10 Anniversary Update에서는 Windows의 우분투에서 bash로 쉘 명령을 실행하는 것이 훨씬 쉽습니다.
내 x-wrt r7000 넷기어 라우터에 대해 내 지역을 설정하려고했지만 Windows의 우분투에서 bash를 사용하여 다음과 같은 효과가 있음을 발견했습니다.
ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
Windows의 새로운 기능-Windows에서 우분투에서 bash 실행-빌드 회의 후 Windows 10 "내부자"빌드에서 사용 가능 :
https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/
sh
파일 을 실행 bash
합니까? 내가 시도하면 창이 깜박이고 사라집니다. 파일을 열린 bash 창으로 드래그 앤 드롭하면 경로가 발견되지 않았다고 표시됩니다 (다른 규칙을 사용하기 때문에).
bash path/to/script
에서 스크립트를 실행합니다. sh
우분투 에도 확실히 있습니다 . 스크립트에 적절한 shebang 및 권한이있는 경우 shebang에 path/to/script
지정된 rnterpreter를 사용하여 스크립트를 실행하십시오.
개인적 으로이 배치 파일을 사용했지만 CygWin이 설치되어 있어야합니다 (그림과 같이 64 비트). 파일 형식 .SH를이 배치 파일 (내 경우에는 ExecSH.BAT)과 연결하면 .SH를 두 번 클릭하면 실행됩니다.
@echo off
setlocal
if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof
set _CYGBIN=C:\cygwin64\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof
:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A
:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%; %_CYGSCRIPT% %*'
.sh
Windows에서 파일을 실행하는 유일한 방법 입니다.