PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash: Ist Verzeichnis X in $PATH enthalten?



yankee42
31-03-2010, 17:23
Hallo zusammen :-).

Ich habe ein bash-Skript, welches prüfen soll, ob ein bestimmtes Verzeichnis in $PATH enthalten ist. Wenn nicht, soll das Verzeichnis hinzugefügt werden.

Wie kann ich dies überprüfen? Ich habe zwar schon etwas gepastelt:

CHECK="/some/path/to/somewhere"
EXISTS=`echo -n "$PATH" | xargs -d ':' -n 1 bash -c '[ "$1" == "$0" ] && echo -n 1' "$CHECK"`
[ "${EXISTS:0:1}" == "1" ] || export PATH="$PATH:$CHECK"
Allerdings erscheint mir dies recht umständlich. Geht es auch einfacher?

msi
31-03-2010, 18:02
zB



echo $PATH | perl -pne '/(^|:)\/pfad(:|$)/ || s/$/:\/pfad/'

undefined
31-03-2010, 19:50
nachsehen ob vorhanden, wenn nicht dann einfügen ....


case ":${PATH}:" in
*:/some/path/to/somewhere:*) ;;
*)
PATH=$PATH:/some/path/to/somewhere
;;
esac

msi
31-03-2010, 20:16
nachsehen ob vorhanden, wenn nicht dann einfügen ....


case ":${PATH}:" in
*:/some/path/to/somewhere:*) ;;
*)
PATH=$PATH:/some/path/to/somewhere
;;
esac



funktioniert nicht unbedingt, da der pfad auch am anfang od ende stehen kann, also ohne : davor/dahinter.

undefined
31-03-2010, 20:29
@msi sehe noch mal genau hin ;)

yankee42
02-04-2010, 12:19
nachsehen ob vorhanden, wenn nicht dann einfügen ....


case ":${PATH}:" in
*:/some/path/to/somewhere:*) ;;
*)
PATH=$PATH:/some/path/to/somewhere
;;
esac

Hey cool, ich bin garnicht auf die Idee gekommen bei dem Test vor und hinter path einen Doppelpunkt zu setzen. Genau wie msi habe ich dies beim ersten mal lesen sogar übersehen. Und dass dies mit dem * im case so verwendbar ist wusste ich auch nicht. Wieder was gelernt. Danke :-).

@msi: Auch dir danke für deine Mühe :-).