交换 $PATH 环境变量中的条目的理想方法是什么?

交换 $PATH 环境变量中的条目的理想方法是什么?

在 Linux 和/或 Mac OSX 中,将 $PATH 环境变量中的条目自动移动到值的前面的最佳方法是什么,如下所示:

/foo/bar:/一/二/三:/opt/local/bin:/home/user/bin

成为

/home/user/bin:/foo/bar:/一/二/三:/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%:}

相关内容