bash 스크립트를 실행하는 방법?


19

그래서 첫 번째 bash 스크립트를 작성했습니다.

#!/bin/bash
echo 'hello world!'
exit

bash가 올바른 위치에 있고 실행 가능하다는 것을 알고 있습니다.

$ which bash
/bin/bash
$ chmod +x myscript.sh

이제 명령 줄에서 실행하려고하지만 오류가 발생합니다.

$ myscript.sh
myscript.sh: command not found

그래서 대신 이것을 시도하고 작동합니다.

$ bash myscript.sh
hello world!

이것이 내가 항상 그것을 실행 해야하는 방법입니까? 나는 다른 스크립트를 앞에 두지 않고 실행 한 것처럼 느낍니다 bash. myscript.sh를 선행하지 않고 어떻게 실행할 수 bash있습니까?

업데이트 : bash 스크립트를 실행하는 이유와 방법에 대한 좋은 설명입니다 .

답변:


28

파일을 실행 가능하게 만들어야합니다. 당신은 그것을 할 수 있습니다

chmod +x <filename>

여기서 스크립트 이름은 다음과 ./같이 셸에 다음 과 같이 셸이 로컬 디렉토리에서 파일을 실행하도록 지시해야합니다.

./script.sh

자신에 PATH있거나 경로를 지정하는 파일 만 실행할 수 있습니다 . ./로컬 디렉토리 ()는 PATH누군가가 악의적 인 목적으로 사용할 수 있으므로 기본적으로 디렉토리에 없습니다 . ls디렉토리에 드롭 이라는 스크립트가 있다고 가정하고 해당 디렉토리로 이동하여 실행 ls하면 해당 스크립트가 나쁜 일을합니다.

당신이 그것에있는 동안 당신은 다음을 사용하여 bash 대신 쉘을 실행하여보다 이식성이 좋을 수 있습니다

#!/bin/sh

또는 bash가 설치되어있는 한 설치 위치에 관계없이 bash를 실행하여 :

#!/usr/bin/env bash

나는 이미 chmod + x myscript.sh로 그 일을했습니다. 내가 잘못 했니?
Andrew

1
당신은 아마 누락되었습니다. / 나는 그것을 대답에 추가했습니다.
pupeno December

1

Fernández의 조언 외에도 다음과 같이 지적하십시오.

./myscript.sh

보안상의 이유로 현재 디렉토리는 실행 경로에 포함되지 않습니다.


1

bash 스크립트를 실행하는 방법은 3 가지가 있습니다. myscript.sh를 실행하려는 스크립트로 사용하십시오.

방법 1

스크립트를 하위 프로세스로 실행하면 쓰기 소유자가 아닌 경우 권한 문제가 발생합니다. chmod로 권한을 변경할 수 있습니다.

$ chmod + x myscript.sh

$ ./myscript.sh

방법 2

현재 사용자로 스크립트를 실행하십시오. bash 스크립트가 제대로 작성 되었다면 오류가 없어야합니다.

$ bash myscript.sh

방법 3

방법 2와 유사하지만 바로 가기입니다. 이것은 현재 세션에서 bash 쉘을 사용하고 있다는 가정을 기반으로합니다.

$ myscript.sh

도움이 되었기를 바랍니다!:)

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