Lignes de configuration de variables d'environnement à chemins multiples avec bash


11

J'ai très longtemps export PATH=A:B:C .... Puis-je créer plusieurs lignes pour en avoir une plus organisée comme suit?

export PATH = A:
              B:
              C:

Réponses:


22

Tu peux faire:

export PATH="A"
export PATH="$PATH:B"
export PATH="$PATH:C"

Chaque ligne suivante s'ajoute au chemin précédemment défini. C'est généralement une bonne habitude, car cela évite de saccager le chemin existant. Si vous souhaitez que le nouveau composant soit prioritaire, permutez l'ordre:

export PATH="A"
export PATH="B:$PATH"
export PATH="C:$PATH"

Alternativement, vous pourriez être en mesure de faire:

export PATH=A:\
B:\ 
C

\marque une continuation de ligne. Je n'ai pas testé cette méthode.


2
Notez que exportc'est une commande intégrée, pas un mot-clé ni une affectation syntaxique. Donc, si vous avez des PATHéléments contenant des espaces (ou des caractères globaux), vous avez besoin de guillemets doubles export PATH="$PATH:B". Vous pouvez également écrire PATH=$PATH:Bet ainsi de suite; vous n'avez besoin d' exportune variable qu'une seule fois, pas à chaque fois qu'elle change (sauf dans certains très vieux shells Bourne), et vous n'avez pas besoin des guillemets doubles dans une affectation.
Gilles 'SO- arrête d'être méchant'

1
Fonctionne également PATH+=:Bpour la concaténation de chaînes.
Aryeh Leib Taurog

4

Vous pouvez étendre les lignes en bash en utilisant une barre oblique inversée à la fin d'une ligne comme celle-ci:

export PATH=/path/A:\
/path/B:\
/path/C

Veuillez noter que l'absence d'espace blanc est importante ici.


0

Une autre approche:

export PATH=$(tr -d $'\n ' <<< "
   /path/A:
   /path/B:
   /path/C")

A l'avantage supplémentaire de ne pas gâcher vos niveaux de retrait.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.