Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: variable containing the current command



Thanks. That's EXACTLY what I was looking for. Reading the man page
carefully reveals that I am too stupid to live. :)

Ben

Bart Schaefer said:
> On May 26,  2:23pm, benjamin@xxxxxxxxxxxxxx wrote:
> > Subject: variable containing the current command
> > Is there a zsh environment variable that contains the current command
> > so that it can be referenced in preexec() or precmd() (or ideally both)?
> 
> In preexec, the positional parameter $1 holds the entire command line just
> as it was read from the terminal (after history expansion but before any
> other expansions/substitutions).
> 
> You could have preexec copy this to a global parameter where precmd can
> see it later.
> 
> On May 26,  5:40pm, Sweth Chandramouli wrote:
> > Subject: Re: variable containing the current command
> > 	$_ is almost what you are looking for; it is supposed to be set for
> > any command to the full name of that command.
> 
> That's not quite correct.  From the doc:
> 
> `_'
>      The last argument of the previous command.  Also, this parameter
>      is set in the environment of every command executed to the full
>      pathname of the command.
> 
> So it's only during the execution of a command that you can find the path
> of that command in $_.  Once you're back in the shell (as during precmd),
> you get the last word of the previous command line (not the first; try
> your "ls" example with some file name arguments to "ls").
> 
> As for this:
> 
> > (astaroth/3)~: ls
> > Ready to do:preexec
> 
> I suspect it has something to do with how or when preexec is executed.
> PWS could tell us more, but he's out for a few days.
> 


-- 
Benjamin Korvemaker
benjamin@xxxxxxxxxxxxxx
     The programmer's national anthem is 'AAAAAAAARRRRGHHHHH!!'.



Messages sorted by: Reverse Date, Date, Thread, Author