Windows에서 .sh 파일을 실행하는 방법은 무엇입니까?


67

./name.sh 명령으로 명령 줄에서 파일 (name.sh)을 실행하려고하면 다음과 같은 오류가 발생합니다.

"." 내부 또는 외부 명령, 작동 가능 또는 배치 파일로 인식되지 않습니다

.sh 파일을 실행하도록 도와주세요

답변:


74

오류 메시지에서 Windows CMD.EXE에 있습니다. 다른 구문을 사용하여 명령을 실행합니다. 당신은 사용해야합니다 sh name.sh당신은 Cygwin에서 또는 이와 유사한이 설치되어있어 가정.

명확히하기 위해 Windows에는 .sh 파일을 지원하는 기본 제공 유틸리티가 없습니다. 이를 실행하려면 Cygwin 과 같은 타사 도구를 설치해야합니다 .


7
Windows에만 Git을 설치할 수 있습니까? 쉘 스크립트가 Git 관련 태스크를 수행하지 않더라도 쉘 스크립트에 대한 지원이 추가되는 것 같습니다.
DaveTheMinion

2
당신은 C를 넣으면 작동 @DavidB 예 : \ 프로그램 파일, PATH에 (그것은 당신의 컴퓨터에 어떤 이상) (86) \ 힘내 \ bin에 망할 놈의 장소 때문에이 sh.exe을 포함한 유용한 도구의 모든 종류의
Sumyrda

1
@DavidB 네, Git Bash는 그것으로 무엇을 해야할지 알고 있습니다!
Legends

13

Windows 명령 프롬프트에서 Linux 명령을 실행하려고합니다.

Linux에서 슬래시는 경로 구분 기호입니다. Windows에서 백 슬래시는 경로 구분 기호이며 슬래시는 일반적으로 인수를 나타냅니다.

따라서 Windows는 "."라는 명령을 실행하려고한다고 생각합니다. "/name.sh"인수를 구문 분석하십시오. 올바른 규칙은 ". \ name.sh"입니다. 또한 Windows는 자동으로 현재 디렉토리에서 명령을 검색하므로 "name.sh"만 입력하면됩니다.

다음으로 직면하게 될 문제는 Windows가 sh 스크립트가 무엇인지 알지 못한다는 것입니다. 다시 이것은 Linux입니다. sh 스크립트를 정말로 원하거나 실행해야하는 경우 Cygwin을 설치하여이 문제를 해결할 수 있습니다.

그러나 이전 의견 중 하나에 따라 스크립트 이름을 name.bat로 바꾸고 "#! / bin / sh"줄을 삭제할 수 있습니다. 이제 Windows가 이해해야 할 배치 파일이 있습니다. 배치 파일에 대한 자세한 내용은 여기를 참조하십시오 .


12

또는 어두운 곳으로 돌리고 Linux를 설치할 수 있습니다. 프롬프트에서 :

sh runide.sh

또는

sudo sh runide.sh

프로그램이 실행되고 시스템도 향상됩니다.


15
"부자가되어 돈을

7

내 의견으로는 최고의 솔루션 :

  • Windows 용 .git 다운로드 및 설치

  • 바탕 화면을 마우스 오른쪽 버튼으로 클릭하고 "git bash here" 라고 말합니다.

  • 유닉스처럼 스크립트를 실행

  • 끝난!

주의 : 많은 명령이 Windows에서 작동하지 않습니다! 그러나 여전히 많은 기본 기능이 작동합니다.

해당 스크립트가 정기적으로 필요한 경우 바탕 화면에서 바로 가기를 만들 수 있습니다.

  • 바로 가기 만들기 에를 mintty.exe바탕 화면에

  • 바로 가기의 속성편집 하고 대상을 변경하십시오 (경로 유지).

  • C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'


작동하지 않습니다. @FOR / f "tokens = *"를 실행할 때 % i IN ( 'docker-machine env --shell cmd default') DO @ % i. 예기치 않은 토큰을 얻습니다 (
Steve Tomlin

5

당신은 가솔린 대신 오렌지 주스로 차를 운전하려고합니다. Windows는이 두 운영 체제 제품군이 DEC PDP-x 시스템의 공통 조상을 공유하므로 Unix / Linux / zOS Unix Subsystem / * ix 쉘 스크립트와 함께 .bat 또는 .cmd 파일에 저장된 유사한 명령을 공유합니다.

즉각적인 만족을 원한다면 "sh.exe"프로그램 또는 "csh.exe"또는 "bash.exe"프로그램 (tsh.exe anyone?)을 제공하는 환경을 설치해야합니다.

또는 Unix 스크립트 명령을 잘 알고 있고 Windows .cmd 및 .bat 파일 명령을 잘 알고 있다면 .sh 파일을 .bat 또는 .cmd 파일로 변환 할 수 있습니다. 그럼에도 불구하고 Windows에서는 그레프, sed, vi, emacs 등과 같은 유닉스 스타일의 프로그램이 더 많이 발생합니다. 따라서 CygWin (미니멀리스트 없음)을 설치하라는 요구는 쉘과 유닉스를 얻는 것입니다. 도구. 이 특별한 경우를 위해 플래시 드라이브에 넣으십시오.


3

누군가 /명령과 \경로를 사용하여 MS-DOS에 대해 이야기했습니다 . 이것은 약간 잘못된 것입니다. 내 예를보십시오 :

C:\myfoo\foo\>cd../.. 
C:\myfoo\foo\>cd..\..

효과에는 차이가 없습니다. 예, 모든 작업에 해당되는 것은 아닙니다. 실제 답변은 단순히 아니요 또는 Cygwin 또는 SSHD 없이는 할 수 없습니다.

내가 바보 무엇인지 알아 내려고 반나절 동안 때문에 나는 단지 알 if then fieval, exec함께 할 -Djava.something전화했을 때.



1

UnixUtil 이라는 다른 쉽고 쉬운 솔루션을 찾았습니다 .

C : 드라이브에 다운로드하여 압축을 풉니 다. path포함 하도록 환경 변수 를 설정하십시오 C:\UnixUtils\usr\local\wbin.

이것은 중요합니다. 경로를 설정하지 마십시오C:\UnixUtils\bin


1

완벽을 기하기 위해 Windows 10의 새로운 "Linux 용 Windows 하위 시스템"기능에 대해 언급하고 싶습니다. 자세한 내용은 http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-에 설명되어 있습니다 . bash-shell-on-windows-10 /

"개발자 모드"스위치를 활성화하고 "Linux 용 Windows 서브 시스템 (베타)"옵션을 활성화해야합니다.

나 자신을 위해 나는 Git for Windows 설치 (어쨌든 사용 중)가 충분하다는 것을 알았다.


1

이것은 오래된 스레드이지만 Windows 10을 실행하는 사용자를위한 것입니다. 제어판 'Windows 기능 켜기 또는 끄기'에서 Windows 기능을 열기 만하면됩니다.

'Linux 용 Windows 서브 시스템'기능을 선택하십시오. 설치 후 'Bash'가 있으며 bash 내에서 기본 Linux 서버를 구성 할 수도 있습니다. 물론 bash 내에서 sh 명령도 작동합니다.


0

문제가 실제로 파일 내에있을 name.sh수 있습니다. .명령 을 사용하려고 하지만 csh유효한 명령이 아닌 일종의 쉘 (예 : 생각합니다) 을 실행하려고합니다 .

그래서 : name.sh올바른 것으로 시작 합니까 ( #!/bin/sh실제로 실행하려고하는 경우 sh)?


1
그렇습니다. #! / bin / sh를 시작합니다. cd D : \ Raghu D : winzip32.exe -min -a -r D : \ p 파일의 내용

0

#! / bin / sh를 삭제하고 익스텐션을 bat로 변경하면 몇 가지 수정 사항이 적용 될 수 있습니다. 그런 다음 파일 이름으로도 호출 할 수 있습니다.

유닉스 쉘 스크립트의 구문과 Windows 배치 파일은 너무 비슷하지 않습니다. cygwin 또는 unxutils로 혼란스러워하는 것이 둘 다에서 작동 할 수 있지만 환경이 항상 동일하다는 것을 확신하지 않으면 두통의 가치가 없습니다.


drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.뭐?! 나는 당신이 이것을 시도하지 않았다고 생각합니다 ... Windows에서는 가장 간단한 bash 기능조차 지원되지 않거나 긴 구문이 필요합니다.
Camilo Martin

두 번째 단락은 상당한 양의 작업 없이는 작동하지 않을 가능성이 있다는 사실을 다룹니다.
Journeyman Geek

당신 말이 맞아요
Camilo Martin

0

집에 (또는 직장에) Linux 상자가 있고 동일한 네트워크에 연결되어 있고이 네트워크가 안전하다면 다음과 같은 트릭을 수행 할 수 있습니다.

  1. Windows에서 폴더를 공유하십시오 (매우 쉽지만 네트워크가 침입자로부터 안전해야합니다).
  2. mount //WinMachine/Share LinuxFolder(IIRC 및 Samba 필요 ) 로 Linux에 마운트하십시오 .
  3. PuTTY 와 같은 것을 사용 하여 해당 Linux 상자에 원격으로 로그인하십시오.
  4. 마운트 된 폴더에서 명령을 실행하십시오.

0

창에서 쉘 스크립트를 실행합니다. 먼저 다음 명령을 사용하십시오 : dos2unix 그런 다음 일반 명령을 사용할 수 있습니다 : sh runide.sh

이것은 잘 될 것입니다.


약간의 수정이 필요합니다. "dos2unix runide.sh"명령을 사용하십시오. 출력 : dos2unix : runide.sh 파일을 UNIX 형식으로 변환 한 후 다음 명령을 사용하십시오. "sh runide.sh"쉘 스크립트를 실행합니다. 행복한 학습
Sridhar GV

질문은 파일 형식이 아니라 Windows의 셸 부족에 관한 것입니다.
Archemar

0

여기에 기존 답변이 정확했지만 Windows 10 에는 전체 bash 셸을 실행하는 수정 된 버전의 Ubuntu가 선택적으로 포함됩니다 .

일단 실행 가능 해지면 스크립트는 bash 내에서 일반적인 방법으로 실행될 수 있습니다.

chmod +x myscript.sh
./myscript.sh

Windows에서 직접 스크립트를 실행하려면 동일한 디렉토리에 바로 가기를 작성하고 'Target'을 다음과 같이 설정하십시오.

C:\Windows\System32\bash.exe -c "./myscript.sh"

스크립트 경로가 바로 가기 위치와 관련이있는 경우 (위의 예와 같이) '시작'필드도 비워 두십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.