Когда я запускаю 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
поскольку он принадлежит вашему пользователю.