bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Should $(fg) resume a stopped job?


From: Chet Ramey
Subject: Re: Should $(fg) resume a stopped job?
Date: Fri, 31 Jul 2020 09:17:36 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

On 7/31/20 2:03 AM, Oğuz wrote:
>     $ sleep 25
>     ^Z
>     [1]+  Stopped                 sleep 25
>     $
>     $ echo $(fg; jobs %)
>     bash: jobs: %: no such job
>     sleep 25
>     $
>     $ jobs
>     [1]+  Running                 sleep 25 &
> 
> What I gather from this is that bash fakes interactive job control in
> command substitution context, because otherwise `fg' wouldn't return
> immediately. But I don't see any point in that `fg' resumes the stopped job
> when it's faked. Is this a bug or a deliberate choice?

Maybe a minor bug, but certainly a choice. The command substitution keeps
the jobs list around, since the subshell is supposed to be an exact copy of
the parent, and it's useful to get the output of `jobs' out of command
substitution.

You just can't expect to do anything with any of those jobs, since the
command substitution shell is not the parent of any of them. It would
make sense to have `fg' complain about that.

-- 
``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/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]