2 votes

Ignorer les signaux dans csh au démarrage

Je suis encore assez novice en matière de Linux, mais je suis encore plus novice en ce qui concerne les notions de SSH et de PUTTY. Après m'être connecté en SSH à une machine linux, je lance la commande suivante :

csh -c 'cd /; set echo off; set term=dumb; set echo on; pwd; csh -i'

Tout cela est bien beau, sauf les maux de tête causés par les interruptions de signal, comme Ctrl+C. J'ai fait des recherches et je suis arrivé aux conclusions suivantes :

  1. En csh, onintr - peut être utilisé pour bloquer les signaux dans un script donné. Cela m'a fait penser à mettre onintr - dans le fichier cshrc : De cette façon, elle serait exécutée à chaque fois que je lance la commande ci-dessus. Mais cette ligne n'est locale que pour un script, donc elle n'aurait pas de réel effet global comme je le voulais.

  2. J'ai découvert que bash, contrairement à csh, possède la commande trap - une commande nonscript spécifique qui redéfinira la façon dont certains signaux sont traités pendant toute la session du shell. commande. J'ai donc essayé de lancer bash à la place et de modifier le code pour l'adapter. En regardant les pages de manuel de bash, j'ai interprété que bash -c se comporte à peu près de la même manière que csh -c donc pour reproduire la commande ci-dessus, j'ai essayé de remplacer csh con bash et ajouter trap "" 2 à la commande.

Par conséquent, la commande complète serait :

bash -c' cd /; set echo off; set term=dumb; set echo on; pwd; bash -i; trap "" 2'

Mais bash -c ne se comporte pas nécessairement comme csh -c du moins dans ce cas.


Je ne sais pas comment résoudre ce problème. Comment puis-je faire en sorte que l'interpréteur de commandes ignore Ctrl+C par défaut ? Dois-je mettre onintr - dans cshrc ? Ou serait-il préférable d'utiliser bash et d'exécuter la commande trap ? Comment dois-je procéder pour mettre en œuvre la meilleure solution ?

0voto

Craig Hesling Points 148

Bien que je ne vois pas vraiment pourquoi vous utiliseriez une déclaration telle que

bash -c ' cd / ; set echo off ; set term=dumb ; set echo on ; pwd ; bash -i;'

Vous pourriez simplement placer trap avant le bash -i afin de garder bash -i de recevoir le signal, comme dans l'exemple suivant :

bash -c ' cd / ; set echo off ; set term=dumb ; set echo on ; pwd ; trap "" 2 ; bash -i;'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X