Unix에서 프로그램이 실행될 수 있는지 확인하는 방법

Unix에서 프로그램이 실행될 수 있는지 확인하는 방법

소스 환경을 만들기 위한 스크립트를 작성 중입니다. 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 운영자실행 가능 플래그가 파일에 설정되어 있는지 테스트합니다. 실행 파일이 실제로 실행되는지 여부는 알려주지 않습니다.

관련 정보