Touche pas à mon shell !
Par Mathieu le mercredi 23 mars 2011, 13:17 - Hacks - Lien permanent
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 ! :)
Commentaires
Heureusement que il y a des admin syst un peu teubés à la fac, sinon qu’es-ce que ça serait ennuyeux :P
Je me demandais, si jamais on entre dans un shell déjà ouvert la commande ‘bash’ ça ouvrira ton shell ou le sien ?
Ne serai-t-il pas mieux de mettre le chemin vers le nouveau shell dans le .login (ou équivalent) de la manière suivante :
Heu… C’est une blague !
Il aurai été judicieux de rappeler à l’abrutis qui gère votre parc informatique que le motd a été inventé pour ce genre de situation. Moi je vote pour une rébellion !
Vive le « :() { :|:& } » !
Du calme les enfants, les administrateurs système sont nos amis.
Oui, je peux changer mon PATH mais ça ne change rien au fait que gnome-terminal lance le shell par défaut, qui doit être quelque par dans /etc/alternatives, peut être. Il me semble que le .login est appelé après le bashrc. Enfin bon, à essayer mais ça m’étonnerait que ça donne quelque chose…