Как я могу очистить повторяющиеся записи из моего PATH?

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

 /Users/myself/.rvm/gems/ruby-2.0.0-p353/bin /Users/myself/.rvm/gems/ruby-2.0.0-p353@global/bin /Users/myself/.rvm/rubies/ruby-2.0.0-p353/bin /usr/local/bin <--( Here ) /usr/bin /bin /usr/sbin /sbin /usr/local/bin <--( Here ) /opt/X11/bin /usr/texbin /Users/myself/.rvm/bin 

  • SSH-вызов не видит правильный $ path, который существует на сервере
  • Почему в моем $ PATH не используется первый исполняемый файл?
  • Проблема с LD_LIBRARY_PATH, программа не может найти библиотеку.
  • В чем разница между PATH и LD_LIBRARY_PATH?
  • Обновление PATH не остается после перезагрузки
  • `which`, но все
  • Как установить PATH для R, установленного в моем каталоге
  • Добавьте несколько подкаталогов под одним и тем же родительским каталогом в PATH
  • 2 Solutions collect form web for “Как я могу очистить повторяющиеся записи из моего PATH?”

    Один из способов сделать это – просто пересмотреть свой путь

     export PATH=/Users/myself/.rvm/gems/ruby-2.0.0-p353/bin: /Users/myself/.rvm/gems/ruby-2.0.0-p353@global/bin: /Users/myself/.rvm/rubies/ruby-2.0.0-p353/bin: /usr/local/bin: /usr/bin: /bin /usr/sbin: /sbin: /opt/X11/bin: /usr/texbin: /Users/myself/.rvm/bin: 

    (Вам нужно поместить все это на одну строку.)

    Хотя определение пути в два раза не повредит. Исправить это зависит только от того, как OCD вы.

    Чтобы это продолжалось при перезагрузке и в новых окнах терминала, вам необходимо изменить сценарий запуска (~ / .profile, ~ / .bashrc, / etc / environment)

    Это связано с тем, что вы кое-что изменили и дважды добавили один и тот же путь. Я избегаю этого, используя небольшую небольшую функцию, модифицирую мою $PATH , которая добавит только каталог, если он еще не присутствует:

     pathmunge () { if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then if [ "$2" = "after" ] ; then PATH=$PATH:$1 else PATH=$1:$PATH fi fi } 

    У меня есть эта функция в файле .profile и определяю мой путь как:

     pathmunge $HOME/bin pathmunge $HOME/scripts export PATH 

    Просто просмотрите файлы инициализации своих оболочек и используйте этот метод, чтобы избежать дубликатов.

    Если вы просто хотите быстро удалить существующие обманы, сделайте следующее:

     PATH=$(echo $PATH | tr ':' '\n' | perl -lne 'chomp; print unless $k{$_}; $k{$_}++' | tr '\n' ':' | sed 's/:$//') 

    Я использую perl вместо sort -u чтобы сохранить порядок каталогов без изменений.

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