Existe uma maneira de adicionar um diretório ao meu PATH em zsh somente se ele ainda não estiver presente?

15

Existe uma maneira fácil no zsh de adicionar um diretório ao meu PATH somente se ele ainda não estiver presente? (ou, mais geralmente, qualquer variável de ambiente). Eu tentei:

PATH+=/my/directory

... mas se for executado duas vezes, será adicionado duas vezes.

    
por Andrew Ferrier 25.01.2013 / 19:20

3 respostas

31

Em zsh $PATH está vinculado (consulte typeset -T ) à matriz $path . Você pode forçar essa matriz a ter valores exclusivos com:

typeset -U path

E, em seguida, adicione o caminho com:

path+=(~/foo)

Sem ter que se preocupar se já estava lá.

Para adicioná-lo na frente, faça:

path=(~/foo "$path[@]")

ou:

path[1,0]=~/foo

se ~/foo já estava em $path , que irá movê-lo para a frente.

    
por 25.01.2013 / 22:04
3

Adicione export -U PATH=~/foo${PATH:+:$PATH} a um dos seus arquivos de inicialização. O -U mantém apenas a primeira ocorrência de um valor em matrizes ou determinadas variáveis delimitadas por : , como o PATH.

    
por 25.01.2013 / 19:37
-3

Você terá que fazer algo como:

if echo $PATH | grep :newpath: ; then doIfPresent; else doIfMissing; fi

Isso funciona somente se newpath for delimitado bu dois ':', precisa considerar os casos quando ele está no início ou no final da mesma forma.

Urgh.

    
por 25.01.2013 / 19:47

Tags