Posso pensar em duas maneiras diferentes de resolver isso. O primeiro deles, é iniciar o seu .bashrc com uma linha que define explicitamente o seu PATH base, dessa forma toda vez que você o fonte, ele é redefinido para a base antes de adicionar diretórios adicionais.
Por exemplo, adicione:
# Reset the PATH to prevent duplication and to make sure that we include
# everything we want.
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Como alternativa, você pode verificar um item antes de adicioná-lo ao caminho. Para fazer isso, você usaria algo como:
if ! [[ $PATH =~ '~/perl5/bin' ]]
then
PATH="~/perl5/bin:$PATH"
fi
O último tende a ficar um pouco repetitivo, se você está adicionando um monte de entradas, no entanto, eu costumo ficar com o primeiro. Se você quisesse usar isso e planejasse adicionar muitas entradas, escrever uma função bash para lidar com isso seria sensato.
Nota: A segunda opção pode funcionar apenas como está escrito nas versões modernas bash. O suporte à expressão regular não é um recurso do Bourne Shell (/ bin / sh) e pode não existir em outros shells. Além disso, o uso de citações pode não ser necessário ou pode até causar problemas em algumas versões mais recentes do bash.