[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: `jobs` shows output even when nothing has been started in the backgr
From: |
alex xmb ratchev |
Subject: |
Re: `jobs` shows output even when nothing has been started in the background |
Date: |
Thu, 15 Jun 2023 21:00:56 +0200 |
On Thu, Jun 15, 2023, 00:13 Ajeet D'Souza <98ajeet@gmail.com> wrote:
> Hey Chet,
>
> Thanks for the quick reply. I have some follow-up questions:
>
> - Is there an elegant way I can start an external process without it
> showing up under jobs, even on affected versions? My current best idea
> is: (_="$(/bin/echo)"; jobs -l)
> - Is there an elegant way I can get the correct number of jobs, even on
> affected versions? My current best idea is to run jobs once before doing
> the count: (jobs &> /dev/null; jobs | wc -l)
>
small .. speed up
p=( $( jobs -p ) ) # here new code will come , with new feature
pcount=${#p[*]}
I'm trying to keep the behaviour consistent across all versions of Bash.
>
> Thanks,
> Ajeet
>
> On Wed, Jun 14, 2023 at 8:17 PM Chet Ramey <chet.ramey@case.edu> wrote:
>
> > On 6/14/23 4:47 AM, Ajeet D'Souza wrote:
> >
> > > Bash Version: 5.2
> > > Patch Level: 15
> > > Release Status: release
> > >
> > > *Description:*
> > > I apologize if this is not a bug, but I couldn't find any documentation
> > > around this behaviour.
> > >
> > > In Bash, this does not produce any output:
> > > /bin/echo; jobs -l
> > >
> > > But if you run it in a subshell, it does:
> > > (/bin/echo; jobs -l) # output: [1] 42135 Done
> > /bin/echo
> > >
> > > Similar problem if you put this into $PROMPT_COMMAND, although it does
> > not
> > > run in a subshell AFAIK:
> > > PROMPT_COMMAND='/bin/echo; jobs -l' # output on every prompt: [1]
> 42135
> > > Done /bin/echo
> > >
> > > This happens only for external processes, if you were to use the
> builtin
> > > echo, it would not show any background process.
> >
> > Thanks for the report. I changed this back in late September, 2022 after
> > a bug-bash discussion:
> >
> > https://lists.gnu.org/archive/html/bug-bash/2022-09/msg00067.html
> >
> > The original report was
> >
> > https://lists.gnu.org/archive/html/bug-bash/2022-07/msg00117.html
> >
> > The original (through bash-5.2) behavior was due to the subshell not
> > notifying the user about the status of the completed foreground job,
> > even though not running it in a subshell ignored foreground jobs. The
> > fix was to remove terminated foreground jobs the shell would never notify
> > the user about (foreground jobs not killed by a signal) from the jobs
> list.
> >
> > Chet
> > --
> > ``The lyf so short, the craft so long to lerne.'' - Chaucer
> > ``Ars longa, vita brevis'' - Hippocrates
> > Chet Ramey, UTech, CWRU chet@case.edu
> http://tiswww.cwru.edu/~chet/
> >
> >
>