On Wed, Aug 13, 2014 at 07:41:08PM +0100, Jason McIntyre wrote:
> hi!
> 
> notice how ksh's history command (fc -l) does not list the last typed history 
> command:
> 
>       $ ls
>       $ date
>       Wed Aug 13 19:29:59 BST 2014
>       $ history
>       1       ls
>       2       date
> 
> the only thing i have to compare it with is bash:
> 
>       bash-4.3$ ls
>       bash-4.3$ date
>       Wed Aug 13 19:31:47 BST 2014
>       bash-4.3$ history
>       1  ls
>         2  date
>       3  history

zsh has the same behaviour as ksh:

remi@mistral:~% ls -d .
.
remi@mistral:~% date
Wed Aug 13 21:32:51 CEST 2014
remi@mistral:~% history
    1  rm .zhistfile
    2  ls -d .
    3  date
remi@mistral:~%

> 
> i think ksh's behaviour is wrong, but i'm unable to find anything that says 
> how it
> should behave. note that commands like (in vi editing mode) "2k" in the 
> example above
> will bring up "date", which is correct but confusing in ksh's case (since 
> looking at
> the output of "history" you'd expect "ls").
> 
> anyone?
> 
> note i have "a fix", included below, but it was produced using the theory 
> about
> an infinite number of monkeys with an infinite amount of time. i definitely 
> do not profer
> it in seriousness.
> 
> jmc
> 
> Index: history.c
> ===================================================================
> RCS file: /cvs/src/bin/ksh/history.c,v
> retrieving revision 1.39
> diff -u -r1.39 history.c
> --- history.c 19 May 2010 17:36:08 -0000      1.39
> +++ history.c 13 Aug 2014 18:38:16 -0000
> @@ -190,7 +190,7 @@
>               const char *nfmt = nflag ? "\t" : "%d\t";
>  
>               for (hp = rflag ? hlast : hfirst;
> -                 hp >= hfirst && hp <= hlast; hp += rflag ? -1 : 1) {
> +                 hp >= hfirst && hp <= hlast + 1; hp += rflag ? -1 : 1) {
>                       shf_fprintf(shl_stdout, nfmt,
>                           hist_source->line - (int) (histptr - hp));
>                       /* print multi-line commands correctly */
> 

Reply via email to