Дублирующая системная переменная PATH (snap/bin:/snap/bin)

Дублирующая системная переменная PATH (snap/bin:/snap/bin)

Когда я запускаю echo $PATHдублирующий выводснимок/корзина:/снимок/корзинапоявляется в конце и кажется необычным.

 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

Является ли это дублирование нежелательным? Если да, то как это можно изменить?

решение1

Вероятно, в вашем ~/.bashrcили в вашем ~/.profileесть команда, которая добавляет /snap/binк $PATHбез предварительной проверки, находится ли он еще в $PATH.

Учтите, что дублированные записи в $PATHпеременной не оказывают никакого влияния, когда вы запускаете команду, которая находится в вашем $PATH. С другой стороны, замедление может присутствовать, когда вы запускаете команду, которая не находится в $PATH(потому что поиск команды выполняется, бесполезно, два или более раз, когда присутствуют дублированные записи), хотя я думаю, что трудно заметить это замедление. Дублированные записи также немного раздражают, когда вы хотите визуально проверить свою $PATHпеременную.

Если вы хотите избежать дублирования записей в вашем файле $PATH, вы можете добавить эту команду в свой ~/.profileфайл (то естьлучшее место для экологических переменных):

# remove duplicated paths in PATH variable
PATH="$(printf "%s" "$PATH" | awk -v RS=':' '!a[$1]++ {if (NR > 1) printf RS; printf $1}')"

Эта команда используется awkдля идентификации каждого элемента в $PATHпеременной (они разделены символом :) и перестраивает $PATHпеременную, избегая повторного добавления дублирующихся папок. Она также сохраняет исходную сортировку папок внутри $PATHпеременной.

Вы можете открыть ~/.profileего с помощью вашего любимого текстового редактора. Если вы открываете его через терминал, вам это не нужно, sudoпоскольку он принадлежит вашему пользователю.

Связанный контент