add_to_PATH () {
for d; do
d=$({ cd -- "$d" && { pwd -P || pwd; } } 2>/dev/null) # canonicalize symbolic links
if [ -z "$d" ]; then continue; fi # skip nonexistent directory
case ":$PATH:" in
*":$d:"*) :;;
*) PATH=$PATH:$d;;
esac
done
}
add_to_PATH ~/perl5/bin ~/.bin
A linha para canonização de links simbólicos é opcional. Se você removê-lo, remova também a próxima linha (se quiser manter diretórios inexistentes) ou altere-a para
if ! [ -d "$d" ]; then continue; fi
Observe que o método de canonização de links simbólicos apenas garante a unicidade entre os diretórios que foram adicionados por essa função. Ele também não lida com casos de borda como um diretório NFS montado em dois locais ou uma montagem de ligação do Linux.