Каков идеальный способ поменять местами записи в переменной среды $PATH?

Каков идеальный способ поменять местами записи в переменной среды $PATH?

В Linux и/или Mac OSX какой лучший способ автоматизировать перемещение записи в переменной среды $PATH в начало значения, например, так:

/foo/bar:/one/two/three:/opt/local/bin:/home/user/bin

Становится

/home/user/bin:/foo/bar:/one/two/three:/opt/local/bin

В настоящее время я использую sed для достижения этой цели, но мне бы хотелось узнать, есть ли более простое решение.

решение1

Я считаю, что это самое простое:

awk 'BEGIN{FS=OFS=":"}{print $4,$1,$2,$3}' <<< $PATH

решение2

Если говорить кратко, то можно написать:

dir=/home/user/bin
PATH=$dir:${PATH//:$dir/}

Если у вас есть что-то вроде

PATH=/first:/second:/home/user/bin/subdir:/home/user/bin

то это более надежно:

tmp=":$PATH:"
tmp=$dir${tmp//:$dir:/:}
PATH=${tmp%:}

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