En lugar de decirte cómo hacerlo, te diré que no deberías hacerlo.
TL; DR: no cambie su secuencia de comandos. En su lugar, configure su administrador de archivos o descubra por qué sus usuarios lo ejecutan accidentalmente.
EDITAR: Parece que trata su secuencia de comandos de alguna manera especial, como si la configuración general no fuera lo suficientemente buena y su secuencia de comandos necesita una confirmación especial del usuario. Hacer doble clic sobre él es la confirmación. Si descubres que tus usuarios lo ejecutan por accidente, entonces debes averiguar por qué lo hacen y resolverlo. Entonces, su verdadero problema no es cómo solicitar la confirmación, sino cómo evitar que sus usuarios la ejecuten accidentalmente.
Por la forma en que expone su problema, parece que espera que su programa (script) se ejecute navegando hasta donde está el archivo y luego haciendo clic en él desde el administrador de archivos. Piense en todos los demás programas en su sistema. ¿Cuántos comienzas así? ¿Navegas /usr/local/bin
cuando inicias Firefox? Por supuesto que tú no. Hace clic en él desde el menú de aplicaciones. (gnome tweak es un script de python, tal vez ese sea un mejor ejemplo)
Esperemos que no consideres que hacer clic en él desde el menú de aplicaciones sea un accidente. Entonces, su problema es cómo hacer que su script aparezca allí en lugar de usar el administrador de archivos. Para hacer esto, debe hacer lo siguiente:
coloque su script lejos de los otros archivos donde el usuario puede hacer clic en él por accidente (el lugar típico es /usr/local/bin/
para una instalación en todo el sistema o ~/.local/bin/
para una instalación del usuario)
crear un archivo de entrada de escritorio (lea las especificaciones estándar ) Aquí hay un caso mínimo:
[Desktop Entry]
Name=Your script name
Exec=path/for/your/script
Icon=path/for/your/icon/can/be/svg
Terminal=false
Type=Application
y empujarlo en /usr/local/share/applications/your-script.xml
o ~/.local/share/your-script.xml
.
Finalmente corre update-desktop-database
.
Como hace doble clic en el script, es tarea del administrador de archivos confirmarlo. No es el trabajo del script confirmar si debe ejecutarse. Lleva esto al extremo. ¿Te imaginas lo ridículo que sería que cada vez que llamaras a algún programa tuvieras que confirmarlo?
El único momento en que un programa debe pedir confirmación es cuando está a punto de hacer algo posiblemente peligroso e irreversible. Por ejemplo, sobrescribir un archivo o saltear la papelera. Y tenga en cuenta que incluso estos ejemplos tratan de hacer que un programa haga algo específico. No se trata de iniciar tales programas. Si el único propósito de un programa es hacer algo tan peligroso, entonces tampoco debería pedir confirmación.
De hecho, Nautilus (administrador de archivos Gnome) ya le pedirá por defecto que confirme si desea ejecutar un script (o simplemente abrirlo en un editor de texto).
Y, por supuesto, este comportamiento es configurable, lo que ofrece al usuario la posibilidad de desactivarlo (entrada de nota en archivos de texto ejecutables ).
Por lo tanto, no agregue un diálogo de confirmación molesto a su secuencia de comandos. Configure su administrador de archivos correctamente. Y deja que tus usuarios hagan lo mismo.
if zenity...
ozenity... || exit