Как я могу очистить повторяющиеся записи из моего 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?
- SSH-вызов не видит правильный $ path, который существует на сервере
- Amazon Linux - путь обновления к java
- Как изменить приоритет PATH для указанной команды в zsh
- `which`, но все
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
чтобы сохранить порядок каталогов без изменений.