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