![Unix에서 프로그램이 실행될 수 있는지 확인하는 방법](https://rvso.com/image/617815/Unix%EC%97%90%EC%84%9C%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4%20%EC%8B%A4%ED%96%89%EB%90%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
소스 환경을 만들기 위한 스크립트를 작성 중입니다. PATH 부분을 처리하는 것은 쉽습니다. 경로가 PATH에 추가될 때 프로그램이 올바르게 실행될 수 있는지 어떻게 확인해야 합니까? which
실행 파일을 실행하는 것이 아니라 실행 파일의 존재 여부만 확인하는 것이므로 사용하는 것만 으로는 충분하지 않습니다. 지금 내가 얻은 것은 프로그램의 버전(예: find -version
)을 확인하고 반환 메시지에 " command not found
"가 포함되어 있는지 확인하는 것입니다. 이상적이지 않습니다. 이를 수행하는 더 좋은 방법이 있습니까?
답변1
나는 당신이 원하는 것을 수행하는 이상적인 방법이 있다고 생각하지 않습니다. Martin이 말했듯이 실행 가능 비트가 설정되어 있는지 확인할 수 있지만 실제로 실행되는지는 확인할 수 없습니다.
당신이 할 수 있는 한 가지는 프로그램을 실행해보고 프로그램 자체에서 특정 텍스트를 찾는 대신 변수를 살펴보는 것입니다 $?
. 이는 프로그램의 종료 상태(일반적으로 OK의 경우 0) 또는 파일을 찾을 수 없는 경우(CentoOS 시스템에서는) 127을 반환합니다. 예:
find --version
if [[ $? == 127 ]]
then
exit 1
fi
이상적인 방법이 없는 이유는 OK에 대한 종료 상태 0이 단지 일반적인 것이고 프로그램이 실행 중 오류가 발생하는 경우 다른 종료 상태를 반환할 수 있기 때문입니다. 이는 무언가가 실행되고 종료 상태 127을 반환하여 일부 오류 조건을 나타낼 때까지 작동할 수 있습니다.
답변2
당신은 사용할 수 있습니다-x
운영자실행 가능 플래그가 파일에 설정되어 있는지 테스트합니다. 실행 파일이 실제로 실행되는지 여부는 알려주지 않습니다.