Existe uma maneira fácil no zsh de adicionar um diretório ao meu PATH apenas se ele ainda não estiver presente? (ou, geralmente, qualquer variável de ambiente). Eu tentei:
PATH+=/my/directory
... mas se for executado duas vezes, será adicionado duas vezes.
Respostas:
In
zsh
$PATH
está vinculado (consultetypeset -T
) à$path
matriz. Você pode forçar essa matriz a ter valores exclusivos com:E então, adicione o caminho com:
Sem ter que se preocupar se já estava lá.
Para adicioná-lo à frente, faça:
ou:
se
~/foo
já estava$path
lá, ele será movido para a frente.fonte
typeset -Ug path
? Quando eu usotypeset -U path
no meu~/.zshrc
arquivo, eu sempre voltar um erro sobre nada estar no caminho enquanto o zshrc está em execução-g
é evitar restringir o escopo, mas~/.zshrc
o escopo já é global. Além disso, eu nunca vizsh
reclamar de um vazio$PATH
(exceto o comando não encontrou erros, é claro).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 certas:
variáveis delimitadas como PATH.fonte
Você terá que fazer algo como:
Isso funciona apenas se
newpath
for delimitado por dois ':', é necessário considerar os casos em que está no início ou no final da mesma forma.Urgh.
fonte
echo "$PATH"
: sempre coloque aspas duplas em torno de substituições de variáveis ).case ":$PATH:" in *:/new/directory:*) :;; *) PATH=$PATH:/new/directory;; esac