Il y a quelque chose qui m’a énervé dès le début de l’année sur les machines qu’on utilise en TP, et ça a continué en pire jusqu’à aujourd’hui. Ce court billet va donc expliquer pourquoi j’ai été amené à compiler mon propre shell, et comment le faire.
Petit rappel des faits : au début de l’année une ligne dans notre .bashrc personnel lançait le navigateur à chaque nouveau terminal, oui vous avez bien entendu, à chaque nouveau terminal le navigateur se lançait. Ceci pour rappeler les règles élémentaires de respect des salles, etc.
Ceci dit, lancer un programme graphique en même temps qu’un terminal, c’est stupide, surtout quand comme moi on lance plusieurs terminaux et qu’on se retrouve avec plusieurs firefox d’ouverts par la même occasion, ça devient profondément pénible. Une petite modification du bashrc plus tard, cette fonctionnalité ubuesque avait disparue.
Mais, il y a quelques jours l’administrateur système a placé la ligne en question dans le bashrc global (/etc/bash.bashrc
), ce qui signifie qu’il n’était plus possible de le désactiver, à moins de recompiler le bash. C’est donc ce que j’ai fait.
Pour recompiler le bash, il vous faut :
- La libc standard
- yacc ou bison
- Le code source de bash : http://ftp.gnu.org/gnu/bash/
Ensuite c’est comme d’habitude : ./configure && make
et puis voilà.
Les plus attentifs auront remarqué que je n’indique pas de modification de code source à réaliser pour désactiver l’appel au bashrc global, ce qui était le but de la manoeuvre. Ceci tout simplement parce que cet appel est désactivé par défaut dans le code fournit par GNU, le paquet Debian étant donc une version légèrement différente de l’originale au niveau du code source, en fait ils ont juste décommenté la ligne contenant #define SYS_BASHRC "/etc/bash.bashrc"
du fichier config-top.h
.
Enfin, une petite formalité, il faut expliquer à gnome-terimnal de lancer notre shell plutôt que le shell par défaut, cela se fait simplement en appelant gnome-terminal avec l’argument -e : gnome-terminal -e chemin_vers_le_bash
.
Enjoy ! :)