Em um determinado sistema, recebo esta saída:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Isso significa que ao executar o comando
$ foo
o shell irá procurar por arquivos executáveis nesta ordem:
-
/usr/local/bin/foo -
/usr/bin/foo -
/bin/foo -
/usr/local/games/foo -
/usr/games/foo
e execute o primeiro encontrado.
which foo retornaria o caminho da primeira dessas correspondências ou nada se um arquivo executável denominado foo não existir nos diretórios PATH (observe a opção which -a que retornará todos corresponde em ordem, não apenas ao primeiro).
Você poderia, por exemplo reordene os diretórios na variável PATH para alterar a ordem de pesquisa, mas isso provavelmente não é a solução para sua pergunta "real". Se você tem um arquivo executável em um diretório de prioridade mais alta, "sombreando" o arquivo desejado, você pode mover o primeiro para longe ou simplesmente executar o de menor prioridade com o caminho completo.
Eu reconheço o mex como parte da instalação do Matlab. Tentando adivinhar o que você deseja fazer, talvez você possa modificar temporariamente o PATH de um único processo em execução, como tal:
$ PATH=/home/user/myownexecs:$PATH matlab
em que /home/user/myownexecs/mex é o executável mex que você deseja dar precedência. Isso modificará temporariamente a variável PATH do processo matlab , mas não interferirá no sistema em geral de maneira duradoura.
Você deve esclarecer sua dúvida para perguntar o que você realmente quer fazer para obter respostas mais adequadas, no entanto.