tclsh comme shell par défaut

 

David Cobac Il m'est venu ce matin à l'idée que plutôt que d'utiliser bash, je pourrais utiliser tclsh (y a des matins comme cela...). Pour tester j'ai créer un utilisateur et lui ai tenté de lui assigné tclsh.

Première déconvenue, j'ai utilisé userdrake (sur mandrake 9.1) et impossible de mettre un autre shell que ceux proposés. Une fois l'utilisateur créé, j'ai donc édité /etc/passwd et ai assigné l'interpréteur tclsh8.4.

Je me suis loggé et...bon c'est pas terrible, quelques bonnes surprises (les commandes unix fonctionnent sans exec, par contre la commande info est (évidemment) remplacée), un prompt paramétrable très facilement, mais bon pas d'historique, pas d'autocomplétion, des caractères cabalistiques du genre [[^A en touchant aux flêches, bref tclsh ne semble pas très adapté à ce genre d'utilisation à moins que ce soit dû à ma config personnelle.

Pour palier au manque d'historique, j'ai remplacé dans /etc/passwd l'appel de tclsh par ledit tclsh8.4 (ledit est un petit utilitaire qui permet de récupérer ce genre de fonctionnalités) mais on perd le prompt, et le comportement des sorties de tclsh change, bref c'est encore pire.

Alors puis-je espérer un historique et naviguer dans la ligne de commande avec les flêches ? Bref, un tkcon sous console !!

[Sylvain Garden] Ah ben, tu n'es pas le premier à y penser. C'est pourquoi certains ont imaginé une extension à tclsh qui s'appelle [tclreadline]. tclreadine met en oeuvre l'autocomplétion, la gestion d'un historique et l'édition facile de la ligne de commandes. Bref tout ce que tu veux. Il faut installer le package dans ta distrib et modifier le fichier .tclshrc pour que [tclreadline] soit chargée au démarrage de tclsh, comme expliquée sur [1].

DC merci ! je ne connaissais pas et je suis surpris que ActiveTcl n'intègre pas cet outil. La compilation s'est assez bien passée (il m'a fallu installer les paquets ncurses-devel et readline-devel). Ensuite :

 ./configure --with-tcl=/usr/local/ActiveTcl/lib

Effectivement tout se passe parfaitement bien maintenant. À suivre...


J'ai ajouté tclreadline2.1.0 dans le répertoire /usr/local/ActiveTcl/lib