Повторяются ли повторяющиеся записи в переменной PATH с приоритетом, заданным первой записью?

Если у меня есть переменная PATH, которая (когда взорвана на несколько строк) содержит что-то вроде этого (с несколькими заметками, добавленными мной):

/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 

возможно ли наличие второго /usr/local/bin/ чтобы заставить /usr/bin иметь приоритет над /usr/local/bin ? Это кажется сумасшедшим (для меня: я никогда не слышал об этом), но это именно то поведение, которое я вижу. Я только что установил PHP с Homebrew, и все же система PHP (из /usr/bin ) имеет приоритет:

 $ which php /usr/bin/php 

НО , после ручного изменения PATH (вместо того, чтобы копать все файлы, полученные моим .zshrc чтобы попытаться выяснить, почему и откуда происходит дублирование), чтобы удалить второй экземпляр /usr/local/bin , я нахожу, что /usr/local/bin имеет приоритет над /usr/bin как я и ожидал, в первую очередь:

 $ which php /usr/local/bin/php 

Что может вызвать это? Это нормально?

hash -r (для bash ) Если вы только что установили двоичный файл, оболочка может не знать об этом немедленно, так как он поддерживает кеш (по сравнению с PATH для каждой команды).

Путь сканируется по порядку, дубликаты не имеют абсолютно никакой разницы. Тем не менее, тупиковая оболочка может сканировать дублируемую запись более одного раза – если foo присутствует дважды, а bar не находится в foo, foo может отсканироваться дважды.