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 $DISPLAY
aprè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?
Réponses:
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.
la source