Дубликат системной переменной PATH (snap / bin: / snap / bin)

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

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

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

4
задан 4 July 2021 в 10:26

1 ответ

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

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

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

# 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 , потому что он принадлежит вашему пользователю.

5
ответ дан 28 July 2021 в 11:22

Другие вопросы по тегам:

Похожие вопросы: