É melhor não criar as duplicatas do que tentar removê-las depois. Isso é facilmente evitado com a técnica que eu uso no meu .bashrc
para adicionar meu diretório bin/
privado:
[ "${PATH#*$HOME/bin:}" == "$PATH" ] && export PATH="$HOME/bin:$PATH"
Eu fiz isso no momento em que fazia atualizações para .bashrc
e queria executá-lo novamente sem reiniciar o shell.
Se você quiser adicionar um diretório ao final de $PATH
, será necessário usar dois pontos principais:
[ "${PATH#*:$HOME/bin}" == "$PATH" ] && export PATH="$PATH:$HOME/bin"
Você pode usar a expansão de parâmetro para percorrer PATH
e remover duplicatas, mas seria um pouco complexo e você precisaria decidir qual posição deveria ser mantida. Algo ao longo das linhas de: -
OLDPATH="$PATH"; NEWPATH=""; colon=""
while [ "${OLDPATH#*:}" != "$OLDPATH" ]
do entry="${OLDPATH%%:*}"; search=":${OLDPATH#*:}:"
[ "${search#*:$entry:}" == "$search" ] && NEWPATH="$NEWPATH$colon$entry" && colon=:
OLDPATH="${OLDPATH#*:}"
done
NEWPATH="$NEWPATH:$OLDPATH"
export PATH="$NEWPATH"
Depois de ter escrito isso na hora e testado agora, eu deveria ter removido a maioria dos erros e deveria ser um guia adequado para o que você precisaria fazer. Ele deixa a ocorrência last de quaisquer duplicatas, que é onde eles estariam se você usasse meu script para evitar duplicatas em primeiro lugar. Em um script, é claro que ele precisa ser chamado com o comando .
/ source
.