source
my -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 バインドマウントなどのエッジケースも処理しません。