OVH Cloud OVH Cloud

Touches flèches sur SunOS/tcsh

16 réponses
Avatar
rmoyen
Salut,

J'ai acc=E8s =E0 une machine Sun (SunOS 8.5) et mon shell est, euh, csh
ou tcsh (je sais, je sais... merci d'=E9viter le troll ici ;-) ), je
sais jamais lequel des deux. Et mon probl=E8me, c'est que je n'arrive
pas =E0 utiliser les touches fl=E8ches pour naviguer dans la ligne de
commande. Actuellement, les fl=E8che me produisent des "^[" (toutes les
4). Notons en plus que les caract=E8res ainsi affich=E9s ne sont pas
effacables par Backspace (mais si j'=E9cris d'autres caract=E8res sur la
ligne, ces autres sont parfaitement effacables).

Sur ma machine habituelle (Linux), j'ai dans mes fichiers de login une
s=E9rie de bindkey pour r=E9gler les quelques touches qui ne font pas ce
que je veux (en l'occurence, les fl=E8ches marchent toutes seules, mais
j'ai d=FB corriger les End/Home/PageUp/...). Probl=E8me, sur la machine
Sun, y'a pas de bindkey (command not found -- je sais, c'est cens=E9
=EAtre un built-in, mais y'a pas...). Une version diff=E9rente et plus
vieille de csh, je suppose...

J'ai vu sur un site qu'il existait parfois une alternative =E0 bindkey,
'bind', mais je ne l'ai pas non plus. J'ai aussi vu ailleurs que
"/bin/sh and /bin/csh don't have arrow key functionality" (sur Sun).
Argh.

Donc, comment je peux faire ?

Autre question assez voisine, est-ce que j'ai un moyen de configurer ma
touche TAB pour qu'elle me fasse de la compl=E9tion ? L=E0 encore, sous
Linux ca marche avec autolist et complete, mais sous Sun, d'une part
complete n'existe pas, et d'autre part autolist n'a l'air de rien
faire.

Merci !
--=20
R=E9mi Moyen

10 réponses

1 2
Avatar
Jean-Marc Bourguet
writes:

J'ai accès à une machine Sun (SunOS 8.5) et mon shell est, euh, csh
ou tcsh


Vu ce que tu decris, tu as csh. Installes tcsh et ca ira mieux.

Sur Linux, il y a de forte chance que le csh soit simplement un lien
vers tcsh.

Meme avec csh, tu as une completion (beaucoup plus simple et non
configurable dans ces effet) accessible avec ESC plutot que TAB.

(je sais, je sais... merci d'éviter le troll ici ;-) )


On va faire un effort.

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
rmoyen

J'ai accès à une machine Sun (SunOS 8.5) et mon shell est, euh, csh
ou tcsh


Vu ce que tu decris, tu as csh. Installes tcsh et ca ira mieux.


Oui, mais non. Je ne contrôle pas la machine, et il n'est de toute
facon pas question que j'ai un shell différent de celui des autres
utilisateurs. C'est pas que j'aimerais pas, hein, c'est juste que c'est
pas un aspect que j'ai la liberté de contrôler.

Sur Linux, il y a de forte chance que le csh soit simplement un lien
vers tcsh.


Je viens de vérifier, oui, c'est bien le cas.

Meme avec csh, tu as une completion (beaucoup plus simple et non
configurable dans ces effet) accessible avec ESC plutot que TAB.


Ah ! Mais comment marche-t-elle ? Esc+quelque chose, je suppose ? Faut
un truc spécial pour l'activer ? (j'avoue, j'ai la flemme d'aller
chercher la doc puisque je t'ai sous la main ;-) )

(je sais, je sais... merci d'éviter le troll ici ;-) )


On va faire un effort.


Mais c'est pas passé loin...
--
Rémi Moyen


Avatar
rmoyen

Meme avec csh, tu as une completion (beaucoup plus simple et non
configurable dans ces effet) accessible avec ESC plutot que TAB.



Il faut l'activer avec "set filec".

Ensuite, il suffit d'appuyer deux fois sur ESC pour compléter les noms de
fichiers sur la ligne de commande (il y a des fonctionnalités plus
évoluées, mais il faut lire la doc.)


Ok, ca marche bien. Bon, j'irais lire la doc pour les détails,
maintenant que j'ai les grandes lignes.

Ca règle au moins mon problème de complétion (reste celui des
flèches), merci !
--
Rémi Moyen



Avatar
Jean-Marc Bourguet
writes:


Meme avec csh, tu as une completion (beaucoup plus simple et non
configurable dans ces effet) accessible avec ESC plutot que TAB.



Il faut l'activer avec "set filec".

Ensuite, il suffit d'appuyer deux fois sur ESC pour compléter les noms de
fichiers sur la ligne de commande (il y a des fonctionnalités plus
évoluées, mais il faut lire la doc.)


Ok, ca marche bien. Bon, j'irais lire la doc pour les détails,
maintenant que j'ai les grandes lignes.

Ca règle au moins mon problème de complétion (reste celui des
flèches), merci !


Si j'ai bonne memoire, il n'y a pas moyen de faire en sorte que le
shell s'en occupe. Mais il est possible d'utiliser un emulateur de
terminaux qui le fasse. Si j'ai bonne memoire, c'etait le cas de
cmdtool, que tu dois encore avoir avec 5.8.

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org




Avatar
Jean-Marc Bourguet
writes:


J'ai accès à une machine Sun (SunOS 8.5) et mon shell est, euh, csh
ou tcsh


Vu ce que tu decris, tu as csh. Installes tcsh et ca ira mieux.


Oui, mais non. Je ne contrôle pas la machine, et il n'est de toute
facon pas question que j'ai un shell différent de celui des autres
utilisateurs. C'est pas que j'aimerais pas, hein, c'est juste que
c'est pas un aspect que j'ai la liberté de contrôler.


Je connais ca :-( mais ca ne m'empeche pas quand meme d'utiliser tcsh

if ($?prompt != 0 && "$prompt" != "" && $?tcsh == 0) then
if (-x $HOME/local/bin/tcsh) then
setenv SHELL $HOME/local/bin/tcsh
if ($?DOT_LOGIN_EXECUTED == 0) then
exec $SHELL -l $*
else
exec $SHELL $*
endif
endif
endif

dans le .cshrc avec un setenv DOT_LOGIN_EXECUTED dans .login devrait
faire l'affaire.

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
rmoyen

Vu ce que tu decris, tu as csh. Installes tcsh et ca ira mieux.


Oui, mais non. Je ne contrôle pas la machine, et il n'est de toute
facon pas question que j'ai un shell différent de celui des autres
utilisateurs. C'est pas que j'aimerais pas, hein, c'est juste que
c'est pas un aspect que j'ai la liberté de contrôler.


Je connais ca :-( mais ca ne m'empeche pas quand meme d'utiliser tcsh


Ah oui, bien sûr ! Je suis bête... Je me disais que la seule solution
était de demander à l'adminstrateur de me changer mon shell de login
(ce que je ne peux pas faire tout seul) et qu'il refuserait. Mais je ne
pensais pas à lancer simplement un autre shell depuis mon profile.

Bon, ca m'embêterait d'utiliser un truc autre que (t)csh, faut quand
même rester compatible avec les collègues (oui, je sais, les scripts
devraient toujours avoir un she-bang au début, mais c'est pas toujours
le cas, et executer des scripts csh avec bash ou zsh, ca donne des
résultats, hum, bizarres). Mais un tcsh comme sur les machines Linux,
c'est parfait !

if ($?prompt != 0 && "$prompt" != "" && $?tcsh == 0) then
if (-x $HOME/local/bin/tcsh) then
setenv SHELL $HOME/local/bin/tcsh
if ($?DOT_LOGIN_EXECUTED == 0) then
exec $SHELL -l $*
else
exec $SHELL $*
endif
endif
endif

dans le .cshrc avec un setenv DOT_LOGIN_EXECUTED dans .login devrait
faire l'affaire.


Je ne comprends pas trop la logique du DOT_LOGIN_EXECUTED. Je vois bien
qu'il s'agit de faire en sorte que le shell executé soit un shell de
login ou non (-l), mais je ne vois pas trop comment tu mets ca en
place.

Bon, en tout cas, avec un tcsh (qui est en plus installé sur la Sun,
rien à installer de plus donc !), ca règle tous mes problèmes, les
flèches marchent correctement, la complétion aussi, bref, c'est
nickel.

Merci !
--
Rémi Moyen



Avatar
Jean-Marc Bourguet
writes:

Je ne comprends pas trop la logique du DOT_LOGIN_EXECUTED. Je vois
bien qu'il s'agit de faire en sorte que le shell executé soit un
shell de login ou non (-l), mais je ne vois pas trop comment tu mets
ca en place.


Si tu le veux, j'essaierais d'expurger de ce qui ne concerne pas la
boite pour laquelle je travaille mon modele de .cshrc et de .login
commente. Ce que j'ai envoye en faisait partie mais il manquait la
section sur le traitement des 4 types d'invocations du shell.

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
talon
wrote:

J'ai accès à une machine Sun (SunOS 8.5) et mon shell est, euh, csh
ou tcsh


Vu ce que tu decris, tu as csh. Installes tcsh et ca ira mieux.


Oui, mais non. Je ne contrôle pas la machine, et il n'est de toute
facon pas question que j'ai un shell différent de celui des autres
utilisateurs. C'est pas que j'aimerais pas, hein, c'est juste que c'est
pas un aspect que j'ai la liberté de contrôler.


Tu es bien conscient que le shell est un programme utilisateur que tu peux
trés bien garder dans ton home et ne partager avec personne? Donc rien
ne t'empêche d'utiliser un ksh compilé statique ou quelque chose du genre qui
a de la complétion et des touches d'histoire (avec set -o emacs ou set -o vi).

--

Michel TALON



Avatar
rmoyen

Si tu le veux, j'essaierais d'expurger de ce qui ne concerne pas la
boite pour laquelle je travaille mon modele de .cshrc et de .login
commente. Ce que j'ai envoye en faisait partie mais il manquait la
section sur le traitement des 4 types d'invocations du shell.


Bof, si ca ne te demande pas trop de boulot, pourquoi pas. Mais
franchement, ne te fatigues pas pour si peu. J'ai un truc qui a l'air
de marcher dans les cas simples que j'ai testé (login sur les machines
Linux ou Sun, lancement d'un script sur ces mêmes machines), j'ai pas
besoin de plus.

Merci pour ton aide !
--
Rémi Moyen

Avatar
rmoyen

Installes tcsh et ca ira mieux.


Oui, mais non. Je ne contrôle pas la machine, et il n'est de toute
facon pas question que j'ai un shell différent de celui des autres
utilisateurs. C'est pas que j'aimerais pas, hein, c'est juste que c'est
pas un aspect que j'ai la liberté de contrôler.


Tu es bien conscient que le shell est un programme utilisateur que tu peux
trés bien garder dans ton home et ne partager avec personne? Donc rien
ne t'empêche d'utiliser un ksh compilé statique ou quelque chose du g enre qui
a de la complétion et des touches d'histoire (avec set -o emacs ou set -o vi).


Oui, je sais. Mais mes raisons pour avoir (presque) le même shell que
tout le monde sont à la fois techniques est humaines.

Techniquement, on a un paquet de petits scripts par-ci par-là, tous
faits pour csh, et qui n'ont pas toujours (voire même rarement) été
écrit proprement, avec un #!/bin/csh au début (la plupart sont des
bricolages faits il y a plus ou moins longtemps par des gens pas
forcément experts). Du coup, il est quasi-indispensable d'avoir un
shell compatible avec.

Et humainement, je ne suis pas le seul à bosser, et si à chaque fois
que je vais voir un truc sur la machine d'un collègue (ou vice-versa),
il faut que je me rappelle que c'est pas le même shell et que toutes
les syntaxes sont différentes, ca va vite devenir gênant. Je peux
tolérer (ou faire tolérer par les autres) quelques légères
divergences (typiquement, ma tab-complétion est bien plus importante
que celle des autres -- enfin, sauf ceux qui m'ont repiqué ma liste
;-) ), mais il faut que ca reste léger.

Bref, faut que je conserve une bonne compatibilité avec l'installation
standard, sans quoi je perdrais en interaction avec les autres tout ce
que je gagne en usage personnel.

En fait et dans ce cas précis, la méthode pour lancer un tcsh (qu'on
utilise déjà sur Linux) sur Sun au login est parfaite.
--
Rémi Moyen



1 2