PATHに重複エントリを増やさない

  • 投稿日:
  • by
  • カテゴリ:

こんなの。

PATH=~/mycmd:/usr/local/bin:~/mycmd:・・・

 

個人的にはこのワンライナーを使うと思う。

環境変数$PATHの重複項目を除去する - 技術メモ帳

export PATH=`echo $PATH | tr ':' '\n' | sort -u | paste -d: -s -`;

ただ、sort -uだと順番かわるから、uniqで書けないですかね。

 

 

重複エントリを削除するのではなくて、重複しないようにエントリを追加する場合は広く使われるパターンがあるようです。

Bug 544652 – speed up pathmunge inside of bashrc, profile

pathmunge () {
case ":${PATH}:" in
*:"$1":*)
    ;;
*)
    if [ "$2" = "after" ]; then
        PATH=$PATH:$1
    else
        PATH=$1:$PATH
    fi
esac
}

 

 

***

どっちにしても、こんな状況にはまるのはやっつけ作業のときだけのような気がします。

特定のpathを通した環境で作業したい場合、端末を開いてPATHを設定し、そのあとはその端末でず~っと作業するからです。

PATH環境変数にpathを追加して、

環境変数も設定するスクリプト

を何回も実行するような状況自体が間抜けすぎる気がします。

そういうのは、

最初に実行するスクリプト

設定変更のたびに実行するスクリプト

に分けりゃいいだけのような気がします。