Sie können read verwenden mit Trennzeichen auf : gesetzt
while read -d ':' p; do
echo "$p"
done <<< "$PATH:"
Der einfachste Weg ist wahrscheinlich, IFS zu ändern zu einem Doppelpunkt und lass es die Worttrennung erledigen:
IFS=:
for p in $PATH ; do
echo "$p"
done
Aber das könnte Dateinamen-Globbing auslösen, in dem seltsamen Fall, dass Ihre PATH enthaltene Zeichen wie *?[] . Sie müssen set -f verwenden um das zu vermeiden.
Obwohl IFS geändert wird könnte sowieso als problematisch angesehen werden, da es den Rest des Skripts betrifft. In Bash könnten wir also einfach die Pfade mit read -a in ein Array aufteilen , das hat auch kein Problem mit Glob-Zeichen:
IFS=: read -a paths <<< "$PATH"
for p in "${paths[@]}" ; do
echo "$p"
done
mit echo:
echo "${PATH//:/$'\n'}"
sed:
sed 's/:/\n/g' <<< "$PATH"
tr:
tr ':' '\n' <<< "$PATH"
Python:
python -c "import os; print os.environ['PATH'].replace(':', '\n')"
zur iterativen Verwendung für:
for i in ${PATH//:/ }; do echo $i; done