GNU/Linux >> LINUX-Kenntnisse >  >> Linux

An pfadähnliche Variable anhängen, ohne führenden Doppelpunkt zu erstellen, wenn nicht festgelegt?

Ich muss ein Verzeichnis an PKG_CONFIG_PATH anhängen . Normalerweise würde ich den Standard verwenden

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$(pyenv prefix)/lib/pkgconfig

aber PKG_CONFIG_PATH wurde auf meinem System noch nicht eingestellt. Daher beginnt die Variable mit einem : Zeichen, das angibt, zuerst im aktuellen Verzeichnis zu suchen. Ich möchte das nicht. Ich habe mich für Folgendes entschieden,

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$(pyenv prefix)/lib/pkgconfig

aber das sieht so hässlich aus. Gibt es einen besseren Weg? Was ist der geeignete Weg, um den Doppelpunkt bedingt anzuhängen, wenn und nur wenn die Variable bereits gesetzt wurde?

Akzeptierte Antwort:

Mit dem ${:+} sind Sie auf dem richtigen Weg Erweiterungsoperator, Sie müssen ihn nur leicht modifizieren:

V=${V:+${V}:}new_V

Die ersten geschweiften Klammern werden zu $V erweitert und der Doppelpunkt iff V ist sonst schon auf nichts gesetzt – genau das, was Sie brauchen (und wahrscheinlich auch einer der Gründe für die Existenz des Operators).

Also in Ihrem Fall:

export "PKG_CONFIG_PATH=${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}$(pyenv prefix)/lib/pkgconfig"

Linux
  1. Muss ich Befehlssubstitutionen in Anführungszeichen setzen, wenn ich ihre Ausgabe einer Variablen zuweise?

  2. Variable mit Variablenwert als Teil des neuen Variablennamens erstellen?

  3. Wenn Prozesse die Umgebung des übergeordneten Elements erben, warum brauchen wir dann den Export?

  4. Warum funktioniert die Variablenerweiterung ohne $ in Ausdrücken?

  5. Ssh – Benötigen Sie ein Tty, um Sudo auszuführen, wenn ich Sudo ohne Passwort ausführen kann?

Bash-Exportvariable

Unterschied zwischen der Definition von Bash-Variablen mit und ohne Export

Erstellen einer leeren Datei mit einem Variablennamen in einem Skript?

Exportbefehl in Linux erklärt

Raw-Socket in Python ohne Root-Rechte erstellen

Exportieren Sie eine Variable aus Bash und verwenden Sie sie in Python