Em vez de dizer-lhe como fazê-lo, direi que você não deveria estar fazendo isso.
TL; DR - Não altere seu script. Em vez disso, configure seu gerenciador de arquivos ou descubra por que seus usuários o executaram acidentalmente.
EDITAR: Você parece tratar seu script de alguma forma especial, como se as configurações gerais não fossem boas o suficiente e seu script precisasse de uma confirmação especial do usuário. Clicando duas vezes sobre ele é a confirmação. Se você descobrir que seus usuários o executam acidentalmente, é necessário descobrir por que eles fazem isso e resolvê-lo. Então o seu problema real é não como exigir confirmação, mas como evitar que seus usuários o executem acidentalmente.
A partir do modo como você expõe seu problema, parece que você espera que seu programa (script) seja executado navegando até o local onde o arquivo se encontra e clicando nele a partir do gerenciador de arquivos. Pense em todos os outros programas no seu sistema. Quantos você começa assim? Você navega para /usr/local/bin
ao iniciar o firefox? Claro que você não. Você clica nele no menu de aplicativos. (gnome tweak é um script python talvez seja um exemplo melhor)
Espero que você não considere clicar no menu de aplicativos como um acidente. Então, seu problema se torna como fazer com que o script apareça lá em vez de usar o gerenciador de arquivos. Para fazer isso, você faz o seguinte:
-
coloque seu script longe dos outros arquivos em que o usuário pode clicar nele acidentalmente (o local típico é /usr/local/bin/
para uma instalação ampla do sistema ou ~/.local/bin/
para uma instalação do usuário)
-
crie um arquivo de entrada na área de trabalho (leia as especificações padrão ). Aqui está um 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
e coloque-o em /usr/local/share/applications/your-script.xml
ou ~/.local/share/your-script.xml
.
-
Finalmente, execute update-desktop-database
.
Como você clica duas vezes no script, é o trabalho do seu gerenciador de arquivos confirmar isso. Não é tarefa do script confirmar se deve ser executado. Leve isso ao extremo. Você pode imaginar o quão ridículo seria cada vez que você ligasse para algum programa que tivesse que confirmar?
A única ocasião em que um programa deve pedir confirmação é quando está prestes a fazer algo possivelmente perigoso e irreversível. Por exemplo, sobrescrevendo um arquivo ou ignorando a lixeira. E note que mesmo esses exemplos são sobre como fazer um programa fazer algo específico. Eles não são sobre como iniciar tais programas. Se um único propósito do programa é fazer algo tão perigoso, então ele não deveria estar pedindo confirmação também.
De fato, o Nautilus (gerenciador de arquivos Gnome) já pedirá, por padrão, que você confirme se deseja executar um script (ou simplesmente abri-lo em um editor de texto).
E, claro, esse comportamento é configurável, dando ao usuário a possibilidade de desativá-lo (note a entrada em Arquivos de Texto Executáveis ).
Portanto, não adicione um diálogo de confirmação irritante ao seu script. Configure seu gerenciador de arquivos corretamente. E deixe seus usuários fazerem o mesmo.