2013-03-31 2 views
2

Я использую Homebrew на Mac OS X 10.8.3. Homebrew хочет каталог /usr/local/bin раньше в PATH, чем /usr/bin, иначе системные программы будут использоваться вместо управляемых заменой Homebrew.Установка zsh PATH не дает желаемого результата

Я использую ЗШ, и в моем .zshenv я сбросить PATH, а затем использовать path_helper инициализировать его, например, так:

if [ -x /usr/libexec/path_helper ]; then 
    PATH='' 
    eval `/usr/libexec/path_helper -s` 
fi 

Сразу после этого, а также в .zshenv, я предварять /usr/local/bin к ДОРОЖКА.

export PATH="/usr/local/bin:$PATH" 

Существуют различные другие дополнения к $ PATH. РВМ, /usr/local/sbin и мой личный bin каталог:

export PATH=$HOME/.rvm/bin :$PATH 
... 
export PATH=$PATH:/usr/local/sbin:$HOME/bin 

Наконец, я использую typeset -u для удаления дубликатов (хотя, где они приходят является для меня загадкой) из PATH.

typeset -U PATH 

После всего этого вот что мой путь выглядит следующим образом:

/Users/mark/.rvm/gems/ruby-1.9.3-p374/bin 
/Users/mark/.rvm/gems/[email protected]/bin 
/Users/mark/.rvm/rubies/ruby-1.9.3-p374/bin 
/Users/mark/.rvm/bin 
/usr/bin 
/bin 
/usr/sbin 
/sbin 
/usr/local/bin 
/usr/local/sbin 
/Users/mark/bin 

Я знаю, что /etc/paths устанавливает эти пути:

/usr/bin 
/bin 
/usr/sbin 
/sbin 
/usr/local/bin 

так что я редактировал файл и удалить /usr/local/bin' option so that the only place it is being set is in .zshenv`.

Все это содержится в моем репозитории dotfile на GitHub (https://github.com/zan5hin/dotfiles) и используется на двух ноутбуках. На первом ноутбуке путь правильный, с /usr/local/bin сразу после записей RVM. На втором ноутбуке это выглядит, как описано выше.

Я затрудняюсь объяснить причину неправильного пути на втором компьютере, когда конфигурация zsh является идентичной копией.

Может ли кто-нибудь предложить, почему путь был бы не в порядке?

Спасибо.

+0

Следуя инструкциям по этому вопросу (http://stackoverflow.com/questions/10343834/homebrew-wants-me-to-amend-my-path-no-clue-how) и редактируя/etc/paths файл для перемещения '/ usr/local/bin' в начало списка, мне удалось заставить обе машины иметь соответствующие и правильные пути. Я до сих пор не понимаю, почему экспорт пути из моего .zshenv не работал должным образом. –

ответ

0

Эта линия является неправильным:

export PATH=$HOME/.rvm/bin :$PATH 

Оно должно быть:

export PATH=$HOME/.rvm/bin:$PATH 

Пространство перед тем :$PATH является причиной потери предыдущего содержимого из $PATH.

+0

Да, это неправильно. Спасибо за уловку. Однако исправление этого не влияет на исходную проблему. Оба ноутбука используют идентичные конфигурации zsh (через Git), и один имеет правильный путь, а другой - нет. –

+0

Попробуйте положить 'set -x' вверху вашего .zshenv.Затем он отобразит команды по мере их выполнения, и вы увидите, как развивается PATH. Это должно помочь вам понять, где это происходит. – Barmar

Смежные вопросы