$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%:}

関連情報