쉘 스크립트 실행 정보

쉘 스크립트 실행 정보

쉘 스크립트 파일이 있다고 가정해 보겠습니다 foo.sh.

chmod + x foo.sh 실행파일로 바꿀 수 있어요 .

Kernighan-Pike: Unix 프로그래밍 환경(UP)에서는 foo입력 후에 스크립트가 실행되어야 함을 나타냅니다. 대신 내 Ubuntu 시스템에서는 sh foo또는 ./foo. 나는 이것이 (UP이 작성될 당시) 존재하지 않았던 쉘의 일부 기능 때문이라고 추측합니다. 이 차이가 존재하는 이유와 그것이 왜 중요한지 누군가 나에게 알려줄 수 있다면 감사하겠습니다.

답변1

  1. 실행 파일의 이름이 중요합니다. 파일 이름이 이면 이름이 foo.sh다른 foo실행 파일이 없으면 실행이 작동하지 않습니다 foo. Windows와 달리 Unix는 이를 수행하지 않습니다.절대적인파일 확장자.

  2. 다음이 작동하는 경우:

    ./foo.sh
    

    하지만 그렇지 않습니다:

    foo.sh
    

    이는 파일이 현재 디렉터리에 있고 현재 디렉터리가 PATH에 없음을 의미합니다. 보호를 위해 명령에 대한 경로를 명시적으로 제공하지 않으면 쉘은 PATH에 있는 파일에서만 명령을 찾습니다.

  3. 공백이 중요합니다. 다음이 작동할 수 있습니다:

    ./foo.sh
    

    그러나 이것은 (이 질문의 첫 번째 버전에서 가져온) 확실히 작동하지 않습니다.

    ./ foo.sh
    

    ./와 사이에 공백이 있으면 쉘은 현재 디렉토리를 인수로 사용하여 실행 foo.sh하려고 한다고 생각합니다 . foo.sh오류 메시지가 생성됩니다.

관련 정보