Remova elegantemente um diretório de $ PATH no shell Bash

removeFromPath() {
local p d
p
=":$1:"
d
=":$PATH:"
d
=${d//$p/:}
d
=${d/#:/}
PATH
=${d/%:/}
}

Características:

  • é puro Bash,
  • não invoca outros processos (como ‘sed’ ou ‘awk’),
  • não muda IFS,
  • não bifurca um sub-shell,
  • lida com caminhos com espaços, e
  • remove todas as ocorrências do argumento em PATH.