![시작 시 런타임 unzip 명령이 스크립트에서 작동하지 않습니다.](https://linux55.com/image/158194/%EC%8B%9C%EC%9E%91%20%EC%8B%9C%20%EB%9F%B0%ED%83%80%EC%9E%84%20unzip%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
다음 bash 스크립트가 있습니다.
FILE=/home/pi/kpidry/test.zip
if test -f "$FILE";
then
echo "$FILE exists"
rm -r /home/pi/test/*
unzip /home/pi/kpidry/test.zip -d /home/pi/test/
rm -r /home/pi/kpidry/test.zip
fi
exit 0
스크립트를 수동으로 실행하면 정상적으로 실행되고 모든 명령이 예상대로 실행됩니다. 그러나 시작 시 스크립트를 실행하기 위해 rc.local에 줄을 추가했습니다. 실행되면 unzip 라인을 제외한 모든 라인을 실행합니다. 아직 압축해제 프로그램이 실행되지 않았기 때문인가요? 그렇다면 rc.local에서 수동으로 실행할 수 있나요?
어떤 종류의 도움이라도 대단히 감사하겠습니다!
답변1
내 생각엔 /usr/bin/에 있는 파일이 부팅 시 사용 가능하다는 보장이 없는 것 같습니다.
/usr/bin은 시스템을 부팅(즉, 시작)하거나 복구하는 데 필요하지 않은 대부분의 실행 파일(즉, 실행 준비가 완료된 프로그램)이 포함된 Unix 계열 운영 체제의 표준 디렉터리입니다. (인용하다:http://www.linfo.org/usr_bin.html)
unzip 대신 "/usr/bin/unzip"을 호출해 보세요.
호출이 충분히 늦어지고 그때까지 /usr/bin/이 마운트되고 PATH 환경이 누락된 경우 이 방법이 작동합니다.