web-dev-qa-db-fra.com

Référence à une variable d'environnement existante dans une autre

Disons que j'ai une variable d'environnement nommée Java_HOME, définie dans le fichier /etc/environment. Je dois ajouter une nouvelle valeur Java_HOME/bin dans la variable PATH. Considérer ce qui suit,

Java_HOME=/usr/apps/jdk1.8.10_1
PATH=/bin/something/:/bin/bash/something:/usr/apps/jdk1.8.10_1/bin

Maintenant si vous le regardez, si je pouvais remplacer /usr/apps/jdk1.8.10_1/bin par quelque chose comme ci-dessous, ce serait plus pratique.

PATH=/bin/something/:/bin/bash/something:Java_HOME/bin

Comment pourrais-je faire ça? Est-ce %Java_HOME%/bin?

3
Romeo Sierra

Vous ne pouvez pas faire cela dans /etc/environment. Ce n'est pas un fichier de script et le développement de variable ne fonctionne pas ici.

Pour modifier PATH à l’échelle du système, il est préférable d’utiliser un fichier portant l’extension .sh dans le dossier /etc/profile.d. Il peut s'appeler myvars.sh ou à peu près n'importe quoi, pourvu qu'il ait l'extension .sh. Dans votre cas, cela pourrait ressembler à quelque chose comme ça:

export Java_HOME=/usr/apps/jdk1.8.10_1
PATH="$PATH:$Java_HOME/bin"

Ainsi, vous conservez la définition par défaut de PATH dans /etc/environment et vous la modifiez dans votre propre fichier.

Veuillez consulter la page EnvironmentVariables pour référence.

2
Gunnar Hjalmarsson

La référence à une variable se fait en ajoutant un $ dans bash. Vérifiez cette entrée:

$ echo $Java_HOME
/usr/apps/jdk1.8.10_1

L'interpréteur de commandes remplace le $variable par sa valeur.

Votre commande serait:

PATH=/bin/something/:/bin/bash/something:$Java_HOME/bin

N'utilisez pas d'espaces, ou votre commande ne fonctionnera pas.

Remarque: Les %symbols% autour d'un nom de variable sont le style de Microsoft.

2
Jos