Uma entrada duplicada em uma variável PATH revoga a precedência dada pela primeira entrada?

1

Se eu tiver uma variável PATH que (quando explodida em várias linhas) contenha algo assim (com algumas notas adicionadas por mim):

/Users/brandon/.rvm/gems/ruby-2.0.0-p353/bin
/Users/brandon/.rvm/gems/ruby-2.0.0-p353@global/bin
/Users/brandon/.rvm/rubies/ruby-2.0.0-p353/bin
/opt/local/bin
/opt/local/sbin
/usr/local/sbin
/usr/local/bin   # <<--- notice this path appears again later
/usr/bin         # <<--- notice this comes AFTER /usr/local/bin
/bin
/usr/sbin
/sbin
/usr/local/bin   # <<--- here it is again!
/usr/local/git/bin
/Users/brandon/bin
/Users/brandon/.homebrew/bin
/usr/local/mysql/bin
/usr/local/share/npm/bin
/Applications/Postgres93.app/Contents/MacOS/bin
/Users/brandon/.rvm/bin

é possível que a presença do segundo /usr/local/bin/ faça com que o /usr/bin tenha precedência sobre /usr/local/bin ? Isso parece loucura (para mim: nunca ouvi falar de tal coisa), mas é exatamente esse o comportamento que estou vendo. Acabei de instalar o PHP com o Homebrew, e ainda assim o sistema PHP (de /usr/bin ) está tomando precedência:

$ which php
/usr/bin/php

MAS , depois de alterar manualmente o PATH (em vez de vasculhar todos os arquivos originados pelo meu .zshrc para tentar descobrir por que & onde a duplicação é vindo de) para remover a instância segundo de /usr/local/bin , acho que /usr/local/bin está tomando precedência sobre /usr/bin como eu esperava que fosse no primeiro lugar:

$ which php
/usr/local/bin/php

O que causaria isso? Isso é normal?

    
por iconoclast 19.02.2014 / 22:42

1 resposta

3

hash -r (para bash ) Se você acabou de instalar um binário, o shell pode não saber sobre ele imediatamente, pois ele mantém um cache (vs. PATH para o comando every .)

O caminho é digitalizado em ordem, as duplicatas não fazem absolutamente nenhuma diferença. No entanto, shells mais burros podem escanear a entrada duplicada mais de uma vez - se foo estiver lá duas vezes e a barra não estiver em foo, foo poderá ser escaneado duas vezes.

    
por 19.02.2014 / 22:50

Tags