Buenas!.
Hace ya tiempo hice una pequeña aplicación que mostraba clones del multi-emulador M.A.M.E.
Este emulador tiene la opción desde línea de comandos de devolverte esos valores.
Tomando la salida del comando hice una aplicación de ejemplo.
El nombre del comando ha ido cambiando con el paso del tiempo.
Para distros de 32 se podía llamar "mame32", para las de 64 "mame64"...y como último "mame" para resumir
y dejarla como única.
En la Mint 20.X el paquete de instalación, el binario de la aplicación es "mame"
Tengo algo así para no complicar el código pero lo mejoraré.
Código:
'Funciona con mame para una distro de 32 bits
'lineacomando = "mame32 " & "-listclones " & Chr$(34) & TextBoxClones.Text & Chr$(34)
'Funciona con mame para una distro de 64 bits
'lineacomando = "mame64 " & "-listclones " & Chr$(34) & TextBoxClones.Text & Chr$(34)
'Funciona con mame para una distro de 64 bits de Linux Mint 20.X
lineacomando = "mame " & "-listclones " & Chr$(34) & TextBoxClones.Text & Chr$(34)
Entonces mi idea es encontrar el comando que existe en la distro y usarlo.
Si uso el comando "whereis" de bash me da tres respuestas.
Cita:mame: /etc/mame /usr/games/mame /usr/share/man/man6/mame.6.gz
- Donde se encuentra la configuración
- El ejecutable
- Supongo que el manual, cambios, etc.
Como es un juego , lo encontramos en /usr/games...pero podía haberse instalado en /usr/local/bin.../usr/bin/...
Imaginar que por alguna circunstancia no se encuentra en los habituales...
¿ Cual creen que debería ser la mejor manera de encontrar el ejecutable o cualquier orden ?.
Claro que también tenemos la posibilidad que al ejecutar una orden que no existe instalada en el sistema, nos devuelva algo la consola por la salida de error.
Una posible solución puede ser esta:
Almacenar toda la salida del comando "whereis" en un array. Descartar lugares y luego preguntar a cada una de estas salidas si el archivo es un binario y usarlo.
Saludos