xen*_*ide 24 shell path shell-script environment-variables posix
我有以下代码,它是source我的-d.shellrc
PATH="${PATH}:${HOME}/perl5/bin"
PATH="${PATH}:${HOME}/.bin"
export PATH
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改其他代码然后更改source此文件,则每个源的路径都会越来越长,每次都在它们已经存在时追加。我能做些什么来防止这种情况?
Gil*_*il' 12
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
Run Code Online (Sandbox Code Playgroud)
符号链接规范化的行是可选的。如果删除它,也删除下一行(如果要保留不存在的目录),或将其更改为
if ! [ -d "$d" ]; then continue; fi
Run Code Online (Sandbox Code Playgroud)
请注意,符号链接规范化方法仅保证此函数添加的目录之间的唯一性。它也不处理边缘情况,例如挂载在两个位置的 NFS 目录或 Linux 绑定挂载。