Eu acho que é um problema "não pode fazer" ...
Primeiro, você não deseja pesquisar esse script por causa da saída 0 no final.
Segundo, nenhum processo filho unix pode alterar diretamente o ambiente do pai. Caso contrário, todos os tipos de coisas malucas seriam possíveis.
Você poderia adicionar algo ao ambiente deles com o perfil padrão ou arquivos bashrc, ou você poderia escrever um wrapper para qualquer programa que eles estivessem tentando executar?
Permita-me elaborar sobre o conceito "wrapper".
Digamos que você queira executar o programa snoopy com PROD ou DEV na variável de ambiente "OPTIONS" dependendo se você deseja produção ou desenvolvimento. Se não estiver definido, digamos que o snoopy faz algo do tipo acabar com o banco de dados para produção e desenvolvimento ...
renomeie "snoopy" para snoopy.bin (ou .snoopy.bin)
coloque um script no mesmo local chamado "snoopy" que contenha isto:
#!/bin/sh
export OPTIONS
case "$OPTIONS"
in
PROD) ;;
DEV) ;;
*) OPTIONS=DEV ;;
esac
#the binary is actually named snoopy.bin
exec "$0.bin" "$@"
Se você não quiser mexer no arquivo atual, coloque este script em algum lugar no sistema de arquivos que estará à frente do programa snoopy real no PATH do usuário e tenha um caminho completo para o binário na instrução exec do script. ..