Unix cómo determinar si un programa se puede ejecutar

Unix cómo determinar si un programa se puede ejecutar

Estoy escribiendo un script para crear el entorno fuente. Manejar la parte PATH es fácil. Sin embargo, ¿cómo debo verificar si un programa se puede ejecutar correctamente cuando su ruta se agrega a PATH? Usarlo whichno es suficiente ya que solo verifica la existencia del ejecutable, no lo ejecuta. Lo que tengo ahora es verificar la versión del programa (es decir find -version) y verificar si el mensaje de respuesta contiene " command not found". No es ideal. ¿Hay una mejor manera de hacer esto?

Respuesta1

No creo que exista una forma ideal de hacer lo que quieres. Como dice Martin, puede verificar que el bit ejecutable esté configurado, pero eso no confirmará que realmente se ejecutará.

Una cosa que puedes hacer es intentar ejecutar el programa y, en lugar de buscar texto específico en el programa, mirar la $?variable. Esto devuelve el estado de salida del programa (convencionalmente 0 para OK) o (en un sistema CentoOS que tengo a mano) 127 para el archivo no encontrado, por ejemplo.

find --version
if [[ $? == 127 ]]
then
    exit 1
fi

La razón por la que no existe una forma ideal es que un estado de salida de 0 para OK es sólo convencional y los programas pueden devolver un estado de salida diferente si se ejecutan pero encuentran un error. Esto puede funcionar para usted hasta que algo se ejecute y devuelva un estado de salida de 127 para indicar alguna condición de error.

Respuesta2

Puedes usar el-x operadorpara probar si el indicador ejecutable está configurado en un archivo. Sin embargo, no le dice si el ejecutable realmente se ejecutará.

información relacionada