Как я могу очистить повторяющиеся записи из моего 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 

  • Добавление нового пути в PATH
  • Проблема с файловым пути
  • Обновление PATH не остается после перезагрузки
  • Сделать проблему с включенными
  • Повторяются ли повторяющиеся записи в переменной PATH с приоритетом, заданным первой записью?
  • разница между / var / www и / usr / local
  • Почему в моем $ PATH не используется первый исполняемый файл?
  • Я не вижу .bashrc в моем домашнем каталоге, но хочу сделать постоянное изменение на моем пути
  • Amazon Linux - путь обновления к java
  • Как установить PATH для R, установленного в моем каталоге
  • Можно ли добавить один исполняемый файл, а не весь каталог, в мой $ PATH?
  • Как установить все подкаталоги каталога в $ 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 - лучшая ОС в мире.