해시뱅을 변경하여 스크립트 유형을 자동으로 감지하는 방법

해시뱅을 변경하여 스크립트 유형을 자동으로 감지하는 방법

다음 스크립트가 있습니다.

 1 #!/usr/bin/env sh
 2 #calculate number of tests we will run
 3 lines="$(cat /etc/crontabs/root|wc -l)"
 4 tests="$(($lines - 2))"
 5
 6 echo "1..$tests"
 7 counter=1
 8 etc.... does other stuff

첫 번째 줄에서는 시작하기 위해 "sh"를 입력할 필요가 없는 방식으로 코딩하려고 합니다. 이전에는 hashbang이 다음과 같았습니다.

#!/bin/sh

코드는 작동하지만 실행하는 데 사용할 exe를 알려 주어야 합니다.

이제 사용자가 어떤 유형의 스크립트인지 알 필요가 없도록 변경해 보고 싶습니다. 스크립트를 실행하려고 하면 다음 오류가 발생하기 때문에 뭔가 잘못하고 있는 것 같습니다.

lab-1:/tmp# crontab_test       
-ash: crontab_test: not found

내가 어디에서 길을 잃었는지 말해줄 수 있나요?

답변1

해시뱅 경로가 좋아 보입니다.

스크립트가 /tmp디렉토리에 있습니까?

/tmp디렉터리는 (일반적으로) 디렉터리에 없으므로 $PATH명령줄에서 지정해야 합니다. ./현재 디렉터리를 사용할 수 있습니다 .

./crontab_test

일부 시스템에는 현재 디렉터리가 .에 있지만 $PATH이는 보안 관점에서 약간 의심스러운 것으로 간주됩니다.

관련 정보