GNU/Linux >> Linux Esercitazione >  >> Linux

Aggiungi a una variabile simile a un percorso senza creare due punti iniziali se non impostato?

Devo aggiungere una directory a PKG_CONFIG_PATH . Normalmente, userei lo standard

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

ma PKG_CONFIG_PATH non è stato precedentemente impostato sul mio sistema. Pertanto, la variabile inizia con un : carattere, che gli dice di cercare prima nella directory corrente. Non voglio quello. Ho optato per quanto segue,

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

ma sembra proprio brutto. C'è un modo migliore? Qual è il modo appropriato per aggiungere condizionalmente i due punti se e solo se la variabile è già stata impostata?

Risposta accettata:

Sei sulla strada giusta con il ${:+} operatore di espansione, devi solo modificarlo leggermente:

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

Le prime parentesi si espandono in $V e i due punti se V è già impostato altrimenti su nulla, che è esattamente ciò di cui hai bisogno (e probabilmente anche uno dei motivi dell'esistenza dell'operatore).

Quindi nel tuo caso:

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

Linux
  1. Perché l'espansione della variabile senza $ funziona nelle espressioni?

  2. Linux:come annullare l'impostazione della variabile di ambiente "http_proxy" in Python?

  3. Esempi di comandi di esportazione Linux (come impostare le variabili di ambiente)

  4. Definizione di una variabile con o senza esportazione

  5. Creazione di socket raw in Python senza privilegi di root

Variabile di esportazione Bash

Differenza tra la definizione di variabili Bash con e senza esportazione

Spiegazione del comando di esportazione in Linux

Esegui il comando senza tenerlo nella cronologia

Come esportare permanentemente una variabile in Linux?

Creazione di file temporanei rispetto alla sostituzione del processo rispetto all'espansione variabile?