Eu não conheço um caminho embutido para conseguir isso, mas você pode adaptar um truque interessante do Unix Power Tools (item 14.14 na segunda edição). Se você estiver usando bash
, defina uma função como esta
cd() {
builtin cd "$1"
PATH="$(echo $PATH | sed sX/foo/foo.foo:XXg)"
if [ "${PWD:0:4}" = "/foo" ]; then
export PATH="/foo/foo.foo:$PATH"
fi
}
(Eu não acho que é possível usar uma variante de ${PATH//}
para fazer a substituição, pois o texto que estamos procurando contém /
.)
Sempre que você cd
estiver em algum lugar, isso fará a alteração solicitada, removerá /foo/foo.foo
do caminho e, finalmente, verificará se o novo diretório atual está em /foo
e adicionará /foo/foo.foo
ao caminho se isto é. Ao remover /foo/foo.foo
do caminho inicialmente, evitamos verificar se ele já existe antes de adicioná-lo.
Para que isso seja concluído, você precisa redefinir pushd
e popd
também ...