Essayez d'exécuter stty -a
pour afficher les paramètres de votre terminal. Mon soupçon est que votre paramètre icrnl
n'est pas défini et sera affiché comme -icrnl
(le signe moins signifie qu'il est désactivé) au lieu d'avoir son paramètre habituel d'activation. Voici comment mon terminal est normalement configuré lorsque je me connecte:
$ stty -a
speed 38400 baud; rows 45; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Et je n'ai aucun problème avec les fins de ligne: retournez (^ M) ou entrez (^ J) pour terminer les lignes d’entrée. Mais si je désactive icrnl
, alors ^ M codes apparaissent soudain chaque fois que je parle à un programme et que je clique sur Entrée:
$ stty -icrnl
$ read line
Line of text^M^M^M^M
$ stty -a
speed 38400 baud; rows 45; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Le code icrnl
signifie "retourne les retours chariot dans les nouvelles lignes" et cache du programme en cours que vous saisissez peut-être ^ M quand Unix veut vraiment ^ J. Les anciens claviers avaient auparavant une touche Retour et Entrée distincte (où Retour vous faisait généralement passer par un formulaire et Entrez-le soumis), mais aujourd'hui, nous n'avons généralement qu'une seule clé de fin de ligne et ce paramètre aide à combiner les deux significations. p>
Ajoutez la commande stty icrnl
à votre .profile
ou .bashrc
si vous trouvez qu'il s'agit bien du problème.