ソースの $PATH で重複を維持します。

ソースの $PATH で重複を維持します。

sourcemy -dには次のコードがあります。.shellrc

PATH="${PATH}:${HOME}/perl5/bin"
PATH="${PATH}:${HOME}/.bin"
export PATH

ただし、別のコードを変更してからsourceこのファイルを変更すると、各ソースへのパスが長くなり、ソースがすでに存在するたびにソースが追加されます。これが起こらないようにするにはどうすればよいですか?

ベストアンサー1

add_to_PATH () {
  for d; do
    d=$({ cd -- "$d" && { pwd -P || pwd; } } 2>/dev/null)  # canonicalize symbolic links
    if [ -z "$d" ]; then continue; fi  # skip nonexistent directory
    case ":$PATH:" in
      *":$d:"*) :;;
      *) PATH=$PATH:$d;;
    esac
  done
}
add_to_PATH ~/perl5/bin ~/.bin

シンボリックリンク正規化行はオプションです。削除した場合は、次の行も削除するか(存在しないディレクトリを維持したい場合)、次の行に変更します。

if ! [ -d "$d" ]; then continue; fi

シンボリックリンク正規化方法は、この関数によって追加されたディレクトリ間の一意性のみを保証することに注意してください。また、2 つの場所にマウントされた NFS ディレクトリや Linux バインドマウントなどのエッジケースも処理しません。

おすすめ記事