CTRL-C on command line does not cancel current command

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

CTRL-C on command line does not cancel current command

Paul Kelaita
Configuration Information [Automatically generated, do not change]:
Machine: i586
OS: linux-musl
Compiler: gcc
Compilation CFLAGS: -Os -fomit-frame-pointer -g -Wno-parentheses -Wno-format-security
uname output: Linux PuPadPro 3.2.0-ish iSH 1.0 (67) May  4 2020 00:20:06 i686 Linux
Machine Type: i586-alpine-linux-musl

Bash Version: 5.0
Patch Level: 11
Release Status: release

Description:
        CTRL-C works fine for anything run in the shell, however, the behavior while typing a command is wrong. The CTRL-C is ignored, and once Enter is hit, it appears that the first character is taken off the beginning of the command typed, and the rest is echoed back.  For example, if I type the command 'date' on the command line, but then hit CTRL-C after the 'e', nothing happens. But after I hit Enter, I get the shell error: 'bash: ate: command not found'

Repeat-By:
        see description above

Fix:
        [Description of how to fix the problem.  If you don't know a
        fix for the problem, don't include this section.]


Reply | Threaded
Open this post in threaded view
|

Re: CTRL-C on command line does not cancel current command

Chet Ramey
On 5/8/20 3:19 PM, Paul Kelaita wrote:

> Machine Type: i586-alpine-linux-musl
>
> Bash Version: 5.0
> Patch Level: 11
> Release Status: release
>
> Description:
> CTRL-C works fine for anything run in the shell, however, the behavior while typing a command is wrong. The CTRL-C is ignored, and once Enter is hit, it appears that the first character is taken off the beginning of the command typed, and the rest is echoed back.  For example, if I type the command 'date' on the command line, but then hit CTRL-C after the 'e', nothing happens. But after I hit Enter, I get the shell error: 'bash: ate: command not found'

I can't reproduce this on Mac OS X or RHEL 7 with bash-5.0.17.


--
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    [hidden email]    http://tiswww.cwru.edu/~chet/

Reply | Threaded
Open this post in threaded view
|

Re: CTRL-C on command line does not cancel current command

Paul Kelaita
Only seeing this on Alpine BusyBox (iSH) on iOS 13.x with either 5.0.11 or 5.0.17

> On May 8, 2020, at 2:19 PM, Chet Ramey <[hidden email]> wrote:
>
> On 5/8/20 3:19 PM, Paul Kelaita wrote:
>
>> Machine Type: i586-alpine-linux-musl
>>
>> Bash Version: 5.0
>> Patch Level: 11
>> Release Status: release
>>
>> Description:
>>    CTRL-C works fine for anything run in the shell, however, the behavior while typing a command is wrong. The CTRL-C is ignored, and once Enter is hit, it appears that the first character is taken off the beginning of the command typed, and the rest is echoed back.  For example, if I type the command 'date' on the command line, but then hit CTRL-C after the 'e', nothing happens. But after I hit Enter, I get the shell error: 'bash: ate: command not found'
>
> I can't reproduce this on Mac OS X or RHEL 7 with bash-5.0.17.
>
>
> --
> ``The lyf so short, the craft so long to lerne.'' - Chaucer
>         ``Ars longa, vita brevis'' - Hippocrates
> Chet Ramey, UTech, CWRU    [hidden email]    http://tiswww.cwru.edu/~chet/

Reply | Threaded
Open this post in threaded view
|

Re: CTRL-C on command line does not cancel current command

Greg Wooledge
On Fri, May 08, 2020 at 02:26:34PM -0700, Paul Kelaita wrote:
> Only seeing this on Alpine BusyBox (iSH) on iOS 13.x with either 5.0.11 or 5.0.17

Busybox is a shell, in addition to being other tools.  Perhaps you're
not even in bash at all?

What does "ps -p $$" say?  How about "set | grep BASH"?

If it turns out that you really are in bash, not in busybox, then we'd
need to know a bit more about your environment.  What kind of terminal
emulator are you in?  What does "stty -a" say?  Have you configured
readline (look for /etc/inputrc and ~/.inputrc files) in some nonstandard
way?

Reply | Threaded
Open this post in threaded view
|

Re: CTRL-C on command line does not cancel current command

Paul Kelaita
Oh, it’s definitely bash.  Works nicely in iSH.  Sorry, I’m wondering if I should have taken this to the iSH forums, but it just seems like a bash issue.  I can run sh, csh, tcsh, and they all handle CTRL-C fine on the command line.  INTR is correct (see below), I’ve tried ‘stty sane’ and ‘stty reset’ to no avail.

I know it’s such a minor issue, but it’s one of those that keeps biting me throughout the day because of the way I’m trained.  I realize I can use CTRL-U, but...

Anyway, here is a snapshot of what you were asking.  I haven’t used readline much, if at all.

Thanks.
Paul



SHELL=/bin/bash
TERMCAP=SC|screen|VT 100/ANSI X3.64 virtual terminal:\
        :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\
        :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\
        :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\
        :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\
        :li#64:co#161:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\
        :cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\
        :im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\
        :ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\
        :ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\
        :se=\E[23m:mb=\E[5m:md=\E[1m:mh=\E[2m:mr=\E[7m:\
        :me=\E[m:ms:\
        :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\
        :vb=\Eg:G0:as=\E(0:ae=\E(B:\
        :ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\
        :po=\E[5i:pf=\E[4i:Km=\E[<:k0=\E[10~:k1=\EOP:k2=\EOQ:\
        :k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
        :k8=\E[19~:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\
        :F3=\E[1;2P:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:\
        :F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:\
        :FB=\E[20;2~:FC=\E[21;2~:FD=\E[23;2~:FE=\E[24;2~:kb=^H:\
        :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:kB=\E[Z:\
        :kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:*7=\E[1;2F:#2=\E[1;2H:\
        :#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:%e=\E[5;2~:%i=\E[1;2C:\
        :kh=\E[1~:@1=\E[1~:kH=\E[4~:@7=\E[4~:kN=\E[6~:kP=\E[5~:\
        :kI=\E[2~:kD=\E[3~:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:km:
WINDOW=3
EDITOR=vim
PWD=/home/paul
LOGNAME=paul
TZ=PST8PDT
HOME=/home/paul
TERM=screen
USER=paul
SHLVL=2
PAGER=less


speed 0 baud; rows 63; columns 161; 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 -cmspar cs5 -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 -flusho -extproc


GNU bash, version 5.0.11(1)-release (i586-alpine-linux-musl)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>







> On May 8, 2020, at 2:36 PM, Greg Wooledge <[hidden email]> wrote:
>
> On Fri, May 08, 2020 at 02:26:34PM -0700, Paul Kelaita wrote:
>> Only seeing this on Alpine BusyBox (iSH) on iOS 13.x with either 5.0.11 or 5.0.17
>
> Busybox is a shell, in addition to being other tools.  Perhaps you're
> not even in bash at all?
>
> What does "ps -p $$" say?  How about "set | grep BASH"?
>
> If it turns out that you really are in bash, not in busybox, then we'd
> need to know a bit more about your environment.  What kind of terminal
> emulator are you in?  What does "stty -a" say?  Have you configured
> readline (look for /etc/inputrc and ~/.inputrc files) in some nonstandard
> way?

Reply | Threaded
Open this post in threaded view
|

Re: CTRL-C on command line does not cancel current command

Dale R. Worley
Paul Kelaita <[hidden email]> writes:
> Sorry, I'm wondering if I should have taken this to the iSH forums,
> but it just seems like a bash issue.

You should ask around, because how Ctrl-C cancels input involves the
interaction of the OS, the bash code proper, and (I assume) the stdin
library.  E.g. if the OS doesn't actually deliver the characters to bash
until you type RET, then the OS has to take care of clearing the
partially-input line.  And all of these actions can be modulated by your
stty settings and any special input mode(s) that bash activates.

Dale