PATH環境変数の切り捨て方法

PATH環境変数の切り捨て方法

私が見たときは$PATHついているようです。

/bin:/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

/binパスに重複があります。私の質問は、パスから重複を削除する方法です。

これを達成するための良い方法はありますか?

ありがとう

答え1

少し複雑すぎますが、すべてのPOSIXシェルで動作し、空のパスエントリも処理する必要があります。

trim_path(){
        PATH=${1%%:*}
        while :; do
                case $1 in
                *:*) set -- "${1#*:}" ;;
                *) break ;;
                esac
                case :$PATH: in
                *":${1%%:*}:"*) ;;
                *) PATH=$PATH:${1%%:*} ;;
                esac
        done
}

trim_path /bin:/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

関連情報