그래서 첫 번째 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 스크립트를 실행하는 이유와 방법에 대한 좋은 설명입니다 .
답변
파일을 실행 가능하게 만들어야합니다. 당신은 그것을 할 수 있습니다
chmod +x <filename>
여기서 스크립트 이름은 다음과 ./
같이 셸에 다음 과 같이 셸이 로컬 디렉토리에서 파일을 실행하도록 지시해야합니다.
./script.sh
자신에 PATH
있거나 경로를 지정하는 파일 만 실행할 수 있습니다 . ./
로컬 디렉토리 ()는 PATH
누군가가 악의적 인 목적으로 사용할 수 있으므로 기본적으로 디렉토리에 없습니다 . ls
디렉토리에 드롭 이라는 스크립트가 있다고 가정하고 해당 디렉토리로 이동하여 실행 ls
하면 해당 스크립트가 나쁜 일을합니다.
당신이 그것에있는 동안 당신은 다음을 사용하여 bash 대신 쉘을 실행하여보다 이식성이 좋을 수 있습니다
#!/bin/sh
또는 bash가 설치되어있는 한 설치 위치에 관계없이 bash를 실행하여 :
#!/usr/bin/env bash
답변
Fernández의 조언 외에도 다음과 같이 지적하십시오.
./myscript.sh
보안상의 이유로 현재 디렉토리는 실행 경로에 포함되지 않습니다.
답변
bash 스크립트를 실행하는 방법은 3 가지가 있습니다. myscript.sh를 실행하려는 스크립트로 사용하십시오.
방법 1
스크립트를 하위 프로세스로 실행하면 쓰기 소유자가 아닌 경우 권한 문제가 발생합니다. chmod로 권한을 변경할 수 있습니다.
$ chmod + x myscript.sh
$ ./myscript.sh
방법 2
현재 사용자로 스크립트를 실행하십시오. bash 스크립트가 제대로 작성 되었다면 오류가 없어야합니다.
$ bash myscript.sh
방법 3
방법 2와 유사하지만 바로 가기입니다. 이것은 현재 세션에서 bash 쉘을 사용하고 있다는 가정을 기반으로합니다.
$ myscript.sh
도움이 되었기를 바랍니다!:)