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:
prosseek
la source

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.

développementalinsanité
la source
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.

Caleb
la source
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.

Luke Davis
la source