stty -a
터미널 설정을 보려면 실행 하십시오. 내 의심은 귀하의 icrnl
설정이 설정되어 있지 않으며 -icrnl
일반적인 설정을 사용하는 대신 (빼기 기호가 꺼져 있음을 나타냄)으로 표시됩니다. 로그인 할 때 터미널이 정상적으로 설정되는 방법은 다음과 같습니다.
$ 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
그리고 줄 끝에 문제가 없습니다 : return (^ M) 또는 enter (^ J)는 입력 줄을 끝냅니다. 그러나 내가 icrnl
꺼지면 프로그램과 대화 할 때마다 ^ M 코드가 갑자기 나타납니다.
$ 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
이 코드 icrnl
는 "캐리지 리턴을 줄 바꿈으로 변환"을 의미하며 실행중인 프로그램에서 숨겨져 있으며 Unix가 실제로 ^ J를 원할 때 ^ M을 입력 할 수 있습니다. 이전 키보드에는 별도의 Return 및 Enter 키가 있었지만 (Return은 일반적으로 양식을 통해 고급으로 이동하여 Enter 키를 제출했습니다) 오늘날에는 일반적으로 하나의 줄 끝 키만 있으므로이 터미널 설정은 두 가지 의미를 결합하는 데 도움이됩니다.
stty icrnl
명령을 사용자에게 추가 .profile
하거나 .bashrc
이것이 실제로 문제 설정이라는 것을 발견하면.