Résumé :
- J'ai un simple script shell qui bascule une variable d'environnement de la valeur
foo
àbar
, ou vice-versa, en fonction de sa valeur actuelle. - J'utilise F12 pour déclencher ce script, et je sais que cela fonctionne.
- Lorsque le script est déclenché, la nouvelle valeur ne persiste pas une fois le script terminé.
Qu'est-ce que je fais de mal ?
Détails :
1. Le script :
Mon script vérifie si la variable d'environnement est présente, ou la crée si elle est manquante :
if [ -z $COLEMAK ];then export COLEMAK="qwerty";fi
Ensuite, le script bascule la valeur de ce qu'elle était à l'autre valeur :
if [ "$COLEMAK" == "qwerty" ] then export COLEMAK="colemak" ; xmodmap ~/colemak.map else export COLEMAK="qwerty" ; xmodmap ~/qwerty.map fi
Notez que en plus de basculer la valeur de la variable, le script utilise xmodmap
pour remapper le clavier d'une disposition à une autre. C'est le but principal du script, et c'est pourquoi je veux le déclencher à partir d'une touche de fonction.
Je sais que ce script ne fonctionne que lorsqu'il est sourcé (. ~/foo.sh
), et cela fonctionne bien à partir du terminal virtuel. Jusque-là tout va bien.
2. xbindkeys :
J'ai configuré .xbindkeysrc.scm
pour inclure (xbindkey '(F12) "term &")
et cela exécute correctement la commande lorsque je presse F12. Jusque-là tout va bien.
J'ai modifié cette ligne pour lire (xbindkey '(F12) ". ~/foo.sh &")
. Je sais que le script s'exécute car il écrit une ligne de journal lorsque je presse F12, mais le changement dans la variable d'environnement ne persiste pas après la fin du script.