L'exportation de la variable DISPLAY ne fonctionne pas

0

Je peux affecter la variable DISPLAY en exécutant la ligne de commande:

export DISPLAY=:2
echo $DISPLAY (returns 2)
hostname (returns opt2)

Dans mon script #! / Bin / bash utilisant la même commande:

echo $DISPLAY (returns 2)
export DISPLAY=:3 
echo $DISPLAY (returns 3)
hostname (returns opt2)

MAIS, quand je fais echo $DISPLAYaprès que le script est fini, j'obtiens toujours "2" comme variable DISPLAY; en d'autres termes, le script n'a pas réussi à réaffecter la variable DISPLAY de "2" à "3".

Si je lance mon script bash une deuxième (troisième, quatrième, ....) fois, je reçois toujours:

echo $DISPLAY (returns 2)
export DISPLAY=:3
echo $DISPLAY (returns 3)
hostname (returns opt2)

Ainsi, bien que le script indique qu'il a affecté la variable DISPLAY à "3", ce n'est pas le cas!

Comment faire en sorte que mon script bash affecte la variable DISPLAY?

Sébastian
la source
1
Sebastian, c'est la troisième fois que je corrige le formatage de votre code. Veuillez prendre une minute pour lire notre aide à l’édition , en particulier la partie concernant l’indentation du code. Vous pouvez utiliser l'aperçu pour voir à quoi ressemblera votre message. En outre, l'éditeur lui-même a aussi une bonne explication .
Slhck

Réponses:

4

L'exportation de variables n'affecte que les sous-réservoirs. Vous ne pouvez pas affecter les shells parents de cette façon. Si vous voulez que votre script puisse modifier des variables dans le shell actuel, vous devez le rechercher.

. ./some_script.sh
Ignacio Vazquez-Abrams
la source