GNU/Linux >> Znalost Linux >  >> Linux

Připojit k proměnné podobné cestě bez vytvoření úvodního dvojtečky, pokud není nastaveno?

Potřebuji připojit adresář k PKG_CONFIG_PATH . Normálně bych použil standard

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

ale PKG_CONFIG_PATH nebyla v mém systému dříve nastavena. Proto proměnná začíná : znak, který mu říká, že se má nejprve podívat do aktuálního adresáře. To nechci. Rozhodl jsem se pro následující,

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

ale zdá se mi to tak ošklivé. Existuje lepší způsob? Jaký je vhodný způsob podmíněného připojení dvojtečky tehdy a pouze v případě, že proměnná již byla nastavena?

Přijatá odpověď:

S ${:+} jste na správné cestě operátor rozšíření, stačí jej mírně upravit:

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

První složené závorky se rozbalí na $V a dvojtečka iff V je nastavena již jinak na nic – což je přesně to, co potřebujete (a pravděpodobně také jeden z důvodů existence operátora).

Takže ve vašem případě:

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

Linux
  1. Vytváření proměnné pomocí hodnoty proměnné jako součásti nového názvu proměnné?

  2. Pokud procesy zdědí prostředí rodiče, proč potřebujeme export?

  3. Vytvoření prázdného souboru s názvem proměnné ve skriptu?

  1. Příklady exportních příkazů pro Linux (jak nastavit proměnné prostředí)

  2. Jak trvale exportovat proměnnou v Linuxu?

  3. Exportujte proměnnou z bash a použijte ji v Pythonu

  1. Musím při přiřazování jejich výstupu k proměnné citovat substituce příkazů?

  2. Proč variabilní expanze bez $ funguje ve výrazech?

  3. Vytvoření dočasného souboru vs substituce procesu vs expanze proměnné?