터미널에서 bash 스크립트를 어떻게 실행합니까?


108

다음과 같은 bash 스크립트가 있습니다.

#!/bin/bash

echo Hello world!

터미널에서 어떻게 실행합니까?


27
실행 권한이 있습니까? 를 시도한 chmod +x scriptname다음 ./scriptname.

답변:


49

$prompt: /path/to/scriptEnter를 누르십시오. 스크립트에 실행 권한이 있는지 확인해야합니다.


1
/path/to 예를 들어 cd /path/to명령을 사용하여 이미 디렉토리 에있는 ./script경우 스크립트를 실행하도록 입력 할 수 있습니다 .이 경우 'script'앞에 './'를 입력하십시오.
FrViPofm


26

스크립트가있는 디렉토리로 이동하거나 $ PATH에있는 bin 폴더에 넣으십시오.

그런 다음 입력

./scriptname.sh

같은 디렉토리에 있거나

scriptname.sh

bin 폴더에있는 경우.


9
이것은 스크립트에 실행 비트가 설정된 경우에만 작동합니다. 그것은 아마도 해결 될 필요가있을 것입니다.
Bryan Oakley

./scriptname.sh나를 위해 작동하지만 scriptname.sh있습니다 scriptname.sh: command not found. -rwxr-xr-x권한입니다.
Spikatrix

1
cd어디서든 조언은 또 다른 일반적인 초보자 오해를 유발합니다. 스크립트가 내부적으로 특정 디렉토리에서 실행해야하는 종속성이없는 경우 (예 : 스크립트가 설명 할 수없는 옵션을 제공하지 않는 데이터 파일을 읽어야하는 경우) cd실행할 곳 이 없어야합니다. 종종 원하지 않을 것입니다.
tripleee

24

다음과 같이 할 수 있습니다.
sh scriptname.sh


6
Downvote : Bash 스크립트가 적절하다면 잘못된 것입니다.
tripleee 2015 년

1
찬성 투표는 : 당신의 bash는 스크립트가 같은 디렉토리에있는 경우이 맥 OS X에 괜찮
칼 테일러

30
@kot "그것은 나를 위해 일한다"는 "이것은 정답이다"와는 매우 거리가 멀다. 그것은 수있는 경우에 작동 sh하는 심볼릭 링크 bash, 또는 스크립트가 어떤 Bash 전용 구조를 사용하지 않는 경우가. 전자의 경우 bash대신 대신 사용 하는 sh것이 유일하게 정확하고 이식 가능한 솔루션입니다. 후자의 경우 OP가 Bash 스크립트에 대한 조언을 구체적으로 요청했기 때문에이 특정 질문에 대한 정답이 아닙니다. 오답을 범하는 것은 무책임합니다. 차이점을 이해하지 못하는 사용자는 여기에 자주 게시하며이 "나에게 도움이되었습니다"답변이 효과가없는 이유를 보여 주어야합니다.
tripleee

@kraftydevil도 ^이 주제에 대한 여러 인기 중복 대상 중 하나 : stackoverflow.com/questions/5725296/…
tripleee

5
@kot 반복합니다 : 이것이 작동하는 상황이 있습니다 (당신이 알아 낸 것처럼). 그러나 그것은 헤드 라인의 질문에 대한 일반적인 경우의 정답이 아닙니다. 최소한이 답변은 그것이 작동하는 조건을 설명해야합니다. 그러나 내 제안은 단순히이 답변을 삭제하는 것입니다.
tripleee

14

먼저 다음을 사용하여 실행 가능하게 만들어야합니다 chmod +x name_of_your_file_script..

실행 가능하게 만든 후 다음을 사용하여 실행할 수 있습니다. ./same_name_of_your_file_script


10

cd 명령 을 사용하여 스크립트가있는 디렉토리로 변경하십시오.

그런 다음 입력

bash program-name.sh

6
cd어디에도 필요하지 않습니다 . 임의의 복잡한 경로 이름을에 대한 인수로 지정할 수 있습니다 bash. 실제로 파일 이름 인수를 사용하는 모든 프로그램은 이런 방식으로 작동합니다 (또는 무섭게도 무섭게 손상됨).
tripleee

10

이것은 오래된 스레드이지만 나는 그것을 통해 일어 났고 아무도 아직 완전한 대답을하지 않은 것에 놀랐습니다. 그래서 여기 간다 ...

명령 줄 스크립트 실행 자습서!

Q : 터미널에서 어떻게 실행합니까?

혼란과 갈등 :

  • '확장자'(예 : .sh 또는 .py 또는 기타)는 필요 하지 않지만 항목을 추적하는 데 도움이됩니다. 아프지 않을 것입니다. 그러나 스크립트 이름에 확장자가 포함되어 있으면이를 사용해야합니다.
  • 어떤 이유로 든 특정 디렉토리에있을 필요 는 없습니다 .
  • 원하는 경우가 아니면 파일을 실행하는 프로그램 (BASH 또는 Python 등)의 이름을 입력 할 필요 가 없습니다 . 아프지 않을 것입니다.
  • 이 작업 을 수행 할 필요 가 없습니다sudo . 이 명령은 다른 사용자 또는 '루트'(관리자) 사용자로 명령을 실행하기 위해 예약되어 있습니다. 여기에 좋은 게시물 .

(스크립트 실행 방법을 배우는 사람은 새 프로그램을 설치하는 것과 같은 실제 필요가없는 한이 명령을 사용하지 않아야합니다. 스크립트를 넣을 수있는 좋은 위치는 ~ / bin 폴더입니다. 입력 cd ~/bin하거나 cd $HOME/bin터미널 프롬프트에서. 해당 폴더에 대한 전체 권한을 갖게됩니다.)

Unix / Linux 유형 시스템의 터미널에서 "이 스크립트를 실행"하려면 다음 세 가지를 수행해야합니다.

  1. 시스템에 스크립트의 위치를 ​​알려줍니다. (하나를 선택)

    • 스크립트 이름과 함께 전체 경로를 입력합니다 (예 :) /path/to/script.sh. pwd또는 echo $PWD터미널 에 입력하여 전체 경로를 확인할 수 있습니다 .
    • 동일한 디렉토리에서 실행 ./하고 경로 (예 :)에 사용 합니다 ./script.sh. 쉬운.
    • 시스템에있는 디렉토리에 스크립트를 PATH넣고 이름 (예 :)을 입력하기 만하면 script.sh됩니다. PATH입력 echo $PATH하거나 echo -e ${PATH//:/\\n}더 깔끔한 목록을 원하는 경우 시스템 을 확인할 수 있습니다 .
  2. 스크립트에 실행 권한이 있음을 시스템에 알립니다. (하나를 선택)

    • chmod +x /path/to/script.sh터미널 에 입력하여 "실행 비트"를 설정합니다 .
    • chmod 755 /path/to/script.sh숫자를 선호 하는 경우 에도 사용할 수 있습니다 . 여기에 멋진 차트에 대한 훌륭한 토론이 있습니다 .
  3. 시스템에 스크립트 유형을 알립니다. (하나를 선택)

    • 스크립트 앞에 프로그램 이름을 입력하십시오. (예 : BASH /path/to/script.sh또는 PHP /path/to/script.php) 스크립트에 .php 또는 .py와 같은 확장자가있는 경우 스크립트 이름의 일부이며 반드시 포함해야합니다.
    • 귀하의 예에서 ( ) 가 있는 shebang을 사용하십시오 #!/bin/bash. 스크립트의 첫 번째 줄에있는 경우 시스템은 해당 프로그램을 사용하여 스크립트를 실행합니다. 프로그램을 입력하거나 확장을 사용할 필요가 없습니다.
    • "휴대용" shebang을 사용하십시오 . 시스템 이 프로그램 이름 (예 : 또는 ) PATH을 사용하여 첫 번째 프로그램 버전을 선택하도록 할 수도 있습니다 . 여기에 자세히 설명 된 장단점이 있습니다 .#!/usr/bin/env#!/usr/bin/env bash#!/usr/bin/env python3

1
꽤 좋은 요약입니다. 어쩌면 마지막 예에서 그 사람을 생각 나게 script.sh하고 script.php이러한 스크립트의 문자 파일 이름은, 당신은 파일 이름에 확장자를 넣어 경우, 당신은 당신이 반대 스크립트 (그 반대를 실행할 때 포함시켜야; 스크립트 아무튼 '의 경우 확장명이 있으면 넣지 마십시오). 이것은 당신이를 생략 할 수있는 경우 예를 들어 DOS 달리 .bat또는 .exe파일 이름에서, 순서대로 작은 세트에서 확장을하는 데 필요한 파일이 실행 고려되어야한다.
tripleee

1
또 다른 일반적인 초보자의 실수 사이의 차이를 오해 path, /path, ./path,와 ~/path. 여기에서 설명하고 싶지 않을 것 같지만, ...와 같은 설명에 대한 링크 일 수 있습니다.
tripleee


-2

스크립트 파일을 사용할 수있는 디렉토리 또는 폴더에있는 경우 다음을 수행하여 실행 모드에서 파일 권한을 변경하기 만하면됩니다.

chmod +x your_filename.sh

그 후 다음 명령을 사용하여 스크립트를 실행합니다.

$ sudo ./your_filename.sh

위로 "." 현재 디렉토리를 나타냅니다. 노트! bash 스크립트 파일이있는 디렉토리에없는 경우 다음을 사용하여 파일이있는 디렉토리를 변경합니다.

cd Directory_name/write the complete path

명령. 그렇지 않으면 스크립트를 실행할 수 없습니다.


이 특정 문제에 대한 모든 관련 개념을 언급하기 때문에 모두가 이것을 할 수 있기를 바랍니다.
Hassan Shamshir

여기에 다른 답변에서 설명하고있는 바와 같이, sudo이다 잘못된 잠재적으로 끔찍하게 잘못 이있는 남용이 불필요 준 힘을 신뢰할 수없는 스크립트를 사용합니다.
tripleee

cd어딘가에 대한 조언 은 이해하기 어렵지만 아마도 틀렸을 것입니다.
tripleee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.