mikemowgli Posted June 21, 2007 Share Posted June 21, 2007 Vous avais-je déjà dit que j'étais mauvais en shell? :) alors voici: mb@pt-mb:/etc/profile.d$ echo $MC_COLOR_TABLEnormal=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 More sharing options...
LukeSkyPator Posted June 21, 2007 Share Posted June 21, 2007 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 More sharing options...
mikemowgli Posted June 21, 2007 Author Share Posted June 21, 2007 d'accord mais alors à quoi sert le mot "export" devant la variable dans mon script? c'est pas justement pour disséminer cette variable (et sa valeur) en dehors que la console en cours? Link to comment Share on other sites More sharing options...
LukeSkyPator Posted June 21, 2007 Share Posted June 21, 2007 export sert à fixer ta variable uniquement pour la session en cours. Si tu la fixes dans le bashrc, ce sera pour la session de console ouverte a posteriori (donc, toutes les sessions de consoles du coup ) LSP, le manchot de retour sur Liferay Link to comment Share on other sites More sharing options...
16ar Posted June 21, 2007 Share Posted June 21, 2007 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.