GNU/Linux >> Tutoriels Linux >  >> Linux

Ajouter à la variable de type chemin sans créer deux-points au début si non défini ?

J'ai besoin d'ajouter un répertoire à PKG_CONFIG_PATH . Normalement, j'utiliserais la norme

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

mais PKG_CONFIG_PATH n'a pas été défini précédemment sur mon système. Par conséquent, la variable commence par un : caractère, qui lui dit de chercher d'abord dans le répertoire courant. Je ne veux pas ça. J'ai opté pour ce qui suit,

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

mais ça a l'air tellement moche. Existe-t-il un meilleur moyen? Quelle est la manière appropriée d'ajouter conditionnellement les deux-points si et seulement si la variable a déjà été définie ?

Réponse acceptée :

Vous êtes sur la bonne voie avec le ${:+} opérateur d'expansion, il vous suffit de le modifier légèrement :

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

Les premières accolades se développent en $V et les deux-points si V est déjà défini sinon sur rien - ce qui est exactement ce dont vous avez besoin (et probablement aussi l'une des raisons de l'existence de l'opérateur).

Ainsi dans votre cas :

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

Linux
  1. Ai-je besoin de citer des substitutions de commandes lors de l'affectation de leur sortie à une variable ? ?

  2. Exemples de commandes d'exportation Linux (Comment définir des variables d'environnement)

  3. Exécuter la commande sans la conserver dans l'historique

  4. Comment exporter définitivement une variable sous Linux ?

  5. Création d'un socket brut en Python sans privilèges root

Variable d'exportation bash

Différence entre la définition de variables bash avec et sans exportation

Créer un fichier vide ayant un nom de variable dans un script ?

Linux - Comment supprimer la variable d'environnement "http_proxy" en Python ?

Tar :Extraire un seul fichier dans un répertoire sans créer de sous-dossiers ?

Explication de la commande d'exportation sous Linux