PATH環境変数からディレクトリの重複コピーを削除できるbashシェル関数を作成しようとしています。
私はこのコマンドを使って1行のコマンドでこれを行うことができると言われましたが、awk
どうすればいいのかわかりません。これを行う方法を知っている人はいますか?
ベストアンサー1
まだ重複エントリがなく、PATH
まだ存在しないディレクトリを追加する場合は、シェルのみを使用して簡単にこれを行うことができます。
for x in /path/to/add …; do
case ":$PATH:" in
*":$x:"*) :;; # already there
*) PATH="$x:$PATH";;
esac
done
以下は、重複エントリが削除されるシェルの断片です$PATH
。項目を 1 つずつ見て、まだ表示されていない項目をコピーします。
if [ -n "$PATH" ]; then
old_PATH=$PATH:; PATH=
while [ -n "$old_PATH" ]; do
x=${old_PATH%%:*} # the first remaining entry
case $PATH: in
*:"$x":*) ;; # already there
*) PATH=$PATH:$x;; # not there yet
esac
old_PATH=${old_PATH#*:}
done
PATH=${PATH#:}
unset old_PATH x
fi