Лучше не создавать дубликаты, чем пытаться удалить их потом. Этого легко избежать с помощью техники, которую я использую в своем .bashrc
для добавления моего личного bin/
каталог:
[ "${PATH#*$HOME/bin:}" == "$PATH" ] && export PATH="$HOME/bin:$PATH"
Я сделал это в то время, когда я делал обновления для .bashrc
и я хотел перезапустить его без перезапуска оболочки.
Если вы хотите добавить каталог в конец $PATH
вам нужно использовать ведущий двоеточие:
[ "${PATH#*:$HOME/bin}" == "$PATH" ] && export PATH="$PATH:$HOME/bin"
Вы можете использовать расширение параметра, чтобы пройти через PATH
и удалите дубликаты, но это будет немного сложно, и вам нужно будет решить, какую позицию следует сохранить. Что-то вроде:
OLDPATH="$PATH"; NEWPATH=""; colon=""
while [ "${OLDPATH#*:}" != "$OLDPATH" ]
do entry="${OLDPATH%%:*}"; search=":${OLDPATH#*:}:"
[ "${search#*:$entry:}" == "$search" ] && NEWPATH="$NEWPATH$colon$entry" && colon=:
OLDPATH="${OLDPATH#*:}"
done
NEWPATH="$NEWPATH:$OLDPATH"
export PATH="$NEWPATH"
После того, как я написал это на лету и проверил, я должен был удалить большинство ошибок, и это должно быть адекватным руководством к тому, что вам нужно будет сделать. Это оставляет прошлой появление любых дубликатов, где они будут, если вы использовали мой сценарий, чтобы избежать дубликатов в первую очередь. В сценарии его, конечно, нужно вызывать с .
/ source
команда.