Como posso forçar um comando a ser executado antes que um aplicativo comece a ser executado

3

Eu quero realizar certas ações através de um script bash antes de abrir qualquer aplicativo, por exemplo. firefox / deluge / VLC via GUI ou CLI. O script deve ser executado apenas para determinados aplicativos e não para todos. Como isso pode ser alcançado?

    
por Uday Kale 19.06.2015 / 20:05

1 resposta

5

Aproveite o fato de que o caminho é pesquisado para aplicativos.

roadmr@blackdog:~$ which firefox
/usr/bin/firefox
roadmr@blackdog:~$ echo $PATH
/home/roadmr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Então, quando você tentar executar o "firefox", ele será procurado nesses diretórios e, eventualmente, será encontrado em /usr/bin e executado.

Mas se você colocar um wrapper chamado firefox em, por exemplo, /usr/local/bin , que faz as ações pré-executadas que você precisa e acaba chamando /usr/bin/firefox (caminho absoluto aqui, ou você vai acabar em um loop), então este wrapper será usado sempre que alguém executar apenas o "firefox" (e observe que o .Desktop launcher também especifica apenas "firefox", um nome relativo que ainda pesquisará no PATH ). Isso ocorre porque /usr/local/bin/firefox vem antes de /usr/bin/firefox na ordem de pesquisa de caminho.

    
por roadmr 19.06.2015 / 20:09