제가 볼 땐 $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