2013-04-30 4 views
12

Ich benutze bash.Ein Liner zum Festlegen der Umgebungsvariablen, falls nicht vorhanden, sonst anhängen

Es ist eine Umgebungsvariable, die ich möchte entweder anhängen, wenn es bereits wie festgelegt ist:

PATH=$PATH":/path/to/bin"

Oder wenn es nicht bereits vorhanden Ich möchte es einfach setzen:

PATH="/path/to/bin"

Gibt es eine Ein-Zeilen-Anweisung, um dies zu tun?

Offensichtlich ist die Umgebungsvariable PATH ziemlich immer eingestellt, aber es war am einfachsten, diese Frage mit zu schreiben.

Antwort

14
PATH=${PATH}${PATH:+:}/path/to/bin 
  • ${PATH} ausgewertet nichts, wenn PATH nicht gesetzt/leer, sonst wertet sie aus dem aktuellen Pfad
  • ${PATH:+:} nichts auswertet, wenn PATH nicht gesetzt ist, ansonsten wertet sie auf „:“
+0

Bevorzugen Sie diese Antwort, wie es ist etwas klarer. Danke – Cheetah

+0

Diese Syntax ist bekannt als Shell Parameter Expansion und vollständige Dokumentation zu dieser Funktion finden Sie in der [man page] (https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter- Erweiterung). – davidjb

+0

Was ist das Csh-Äquivalent zu "setenv"? – Spade

16

Ein wenig Verbesserung auf Michael Burrs Antwort. Dies funktioniert mit set -u (set -o nounset) sowie:

PATH=${PATH:+$PATH:}/path/to/bin 
+0

Was ist das csh-Äquivalent dazu? – Spade

Verwandte Themen