Jump to content

la terrible incompréhension des variables d'env.


Recommended Posts

Vous avais-je déjà dit que j'étais mauvais en shell? :)

alors voici:

mb@pt-mb:/etc/profile.d$ echo $MC_COLOR_TABLE

normal=brown,default:marked=brown,default:selected=black,white:markselect=brown,default:directory=brown,default:link=brown,default:editnormal=brown,default

mb@pt-mb:/etc/profile.d$ cat perso-mc_color_table.sh

#!/bin/bash

export MC_COLOR_TABLE="normal=brown,default:marked=brown,default:selected=black,white:markselect=brown,default:directory=blue,default:link=brown,default:editnormal=brown,default"

mb@pt-mb:/etc/profile.d$ ./perso-mc_color_table.sh

mb@pt-mb:/etc/profile.d$ echo $MC_COLOR_TABLE

normal=brown,default:marked=brown,default:selected=black,white:markselect=brown,default:directory=brown,default:link=brown,default:editnormal=brown,default

mb@pt-mb:/etc/profile.d$

J'avais autrefois modifié la variable MC_COLOR_TABLE pour que mc me donne les répertoire ET fichiers en brun. Maintenant je voudrais que les répertoires soit en bleu.

Mais quand j'exécute mon script qui doit changer la couleur des répertoires du brun vers le bleu, l'export de la variable ne se fait pas, comme vous pouvez le constater. Pourquoi tant de haine?

merci

NB: si j'exécute la commande

export MC_COLOR_TABLE="normal=brown,default:marked=brown,default:selected=black,white:markselect=brown,default:directory=blue,default:link=brown,default:editnormal=brown,default"

à la main, cela marche. Il n'y a que lorsque j'exécute cette commande dnas le script que ça ne va pas. Mon script est mauvais?

Link to comment
Share on other sites

En fait, l'export d'une variable d'environnement ne marche que pendant la durée de ton contexte console. En gros, quand tu lances ton script, tu l'exécutes dans un nouveau contexte, tu modifies ta variable d'environnement et tu quittes. Si tu mets echo MA_VARIABLE dans ton script, tu verras qu'elle a la bonne valeur. Mais du coup, quand ton script se termine, tu retournes à ta console avec les variables d'environnement de ta console.

Si tu veux que la modif soit permanente, tu dois l'ajouter à ton bash_rc. De ce fait, quand tu lanceras une console, il chargera le bash_rc et modifiera ta variable

Espérant t'avoir été utile,

LSP, le manchot qui part déjeuner

Link to comment
Share on other sites

Plutot que de lancer ton script dans un nouveau shell comme tu le fais avec :

./perso-mc_color_table.sh

Qui est equivalent a :

sh perso-mc_color_table.sh

utilise source, qui executera les commandes de ton script comme si ct dans ton shell et non pas dans un nouveau shell enfant au shell courant

source perso-mc_color_table.sh

Apres, si c'est pour du permanent, vaut mieux le mettre dans le .bashrc ou le profile.

Seulement, c'est bizarre, il semble etre dans /etc/profile.d ...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...