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.