Проблемы с дублированием $ PATH

Если я делаю echo $PATH я получаю следующее:

/ USR / местные / бен: / USR / местные / SBIN: / USR / бен: / USR / SBIN: / USR / местные / доли / НМП / бен: / USR / местные / доли / питон: / OPT / X11 / бен : /Users/kh/.rvm/bin: / USR / бен: / бен: / USR / SBIN: / SBIN: / USR / местные / бен: / OPT / X11 / бен

Это в файле ~ / .zshrc:

export PATH = / usr / local / bin: / usr / local / sbin: / usr / bin: / usr / sbin: / usr / local / share / npm / bin: / usr / local / share / python: / opt / X11 / бен: $ HOME / .rvm / бен: $ PATH

Мне пришлось вручную добавить / usr / local / etc … в начале этого файла, потому что доморощенный жаловался.

Я искал все возможные файлы (я знаю), чтобы найти, откуда строится $ PATH. Но безрезультатно. Эти

 ~/.bash_profile ~/.bashrc ~/.profile 

Какие-либо предложения.

  • Сломанный поиск истории после обновления oh-my-zsh
  • zsh продолжает забывать PATH vars
  • Как найти функцию zsh, связанную с виджетами zle?
  • ZHH имеет две вкладки для заполнения имен файлов
  • Как передать переменные среды в новый сеанс входа в ssh?
  • Что используется сначала, .bashrc или .zshrc?
  • Показать каждую установленную оболочку командной строки?
  • У нас больше истории для cd?
  • 4 Solutions collect form web for “Проблемы с дублированием $ PATH”

    Я не знаю, какой другой файл устанавливает вашу $PATH но дублированные записи

     /opt/X11/bin /usr/bin /usr/local/bin /usr/sbin 

    Все они установлены в вашем ~/.zshrc поэтому все, что вам нужно сделать, не установлено там. В любом случае, все они должны быть в $PATH по умолчанию, и их не нужно добавлять. Большинство систем поставляются с $PATH по умолчанию, которые будут включать эти каталоги, дополнения, сделанные в файлах ~/.zshrc для пользователей, должны добавлять только нестандартные каталоги.

    Измените свою декларацию $PATH на

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

    Пути по умолчанию определяются в /etc/paths на OSX. Поскольку подпроцесс наследует переменные окружения, и вы явно устанавливаете /usr/bin/ в вашей $PATH вас есть повторяющиеся записи.

    Чтобы удалить дубликаты записей, вы можете использовать:

     typeset -U PATH 

    Согласно странице руководства ZSH :

    ФАЙЛЫ STARTUP / SHUTDOWN

    Команды сначала считываются из / etc / zshenv; это нельзя переопределить. Последующее поведение изменяется с помощью параметров RCS и GLOBAL_RCS; первая затрагивает все файлы автозагрузки, а вторая касается только файлов запуска (те, которые показаны здесь, с пуском, начинающимся с /). Если одна из опций не установлена ​​в какой-либо точке, любой последующий файл (ы) запуска соответствующего типа не будет считан. Также возможно, чтобы файл в $ ZDOTDIR снова включил GLOBAL_RCS. По умолчанию установлены RCS и GLOBAL_RCS.

    Затем команды считываются из $ ZDOTDIR / .zshenv. Если оболочка является оболочкой входа, команды считываются из / etc / zprofile, а затем $ ZDOTDIR / .zprofile. Затем, если оболочка является интерактивной, команды считываются из / etc / zshrc, а затем $ ZDOTDIR / .zshrc. Наконец, если оболочка является оболочкой входа, читаются / etc / zlogin и $ ZDOTDIR / .zlogin.

    Таким образом, вы можете проверить:

     /etc/zshenv /etc/zshrc /etc/zlogin и /etc/zshenv /etc/zshrc /etc/zlogin и /etc/zshenv /etc/zshrc /etc/zlogin 

    и любые файлы, с которыми они происходят, с источником. Поскольку вы OS X, вероятно, вы найдете что-то вроде:

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

    который, согласно странице man path_helper , также будет выглядеть:

     /etc/paths /etc/paths.d/* и /etc/paths /etc/paths.d/* 

    Вы можете установить дополнительные пути к PATH, используя следующий синтаксис:

     PATH=$PATH:/additonally_location 

    Поэтому я думаю, что PATH не дублируется.

    Linux и Unix - лучшая ОС в мире.