Adicionar ao caminho se no subdir

1

Como posso adicionar um arquivo ao caminho se o diretório de trabalho for o diretório do arquivo ou um de seus subdiretórios? Então, quando eu estiver em /foo ou em /foo/bar/ , terei /foo/foo.foo no meu caminho, mas se eu estiver acima de /foo na árvore, não terei isso.

    
por Elliot Gorokhovsky 15.01.2016 / 23:47

1 resposta

0

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 ...

    
por 16.01.2016 / 00:08

Tags