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

Re: apt-get aborts in subshell with redirections on Debian 12



On Mon, Sep 25, 2023 at 09:10:28AM +0900, John Crawley wrote:
> On 24/09/2023 21:36, Greg Wooledge wrote:
> > On Sun, Sep 24, 2023 at 12:03:12PM +0200, Michel Verdier wrote:
> > > #!/bin/bash
> > > errors=$(sudo apt-get install unknown 2>&1 1>/dev/tty)
> > > echo "output: $errors"
> > > errors=$(sudo apt-get install mirage 2>&1 1>/dev/tty)
> > > echo "output: $errors"
> > > 
> > > [...]
> > > It waits until I type 'n'
> > 
> > Same here.
> > 
> Thanks for testing.
> 
> I just tried, and yes it runs OK when the commands are in a script.
> But type directly into the terminal:
> 
> errors=$(sudo apt-get install mirage 2>&1 1>/dev/tty)
> 
> To see the immediate abort.
> (But not on Debian 11, or after invoking 'sh'.)

I actually tested in a terminal, not with a script.  But the fact that
*you* are getting different results with a script vs. a terminal is a
clue.  It doesn't give us a complete answer, but it's definitely a
significant observation.

The first thing you'll want to check is "type sudo", in your shell.

unicorn:~$ type sudo
sudo is hashed (/usr/bin/sudo)

If yours is an alias, or a function, or comes from some other directory,
that might explain the difference you see when running in a terminal.

If that doesn't give any further clues, you might look for unusual
configuration in your interactive shell.  Things like a DEBUG trap,
or the PROMPT_COMMAND or PS0 variables, which might trigger surprises
when running commands, would be good to know about.

You could also try a few experiments:

1) Run "bash --noprofile --norc" to get a vanilla shell, without any
   aliases, functions, weird shopts, etc.  See if you still get the
   undesired results.

2) Try in dash, ksh, zsh or whatever other shells you have.  See if you
   get the undesired results in any shell other than bash.  (It looks
   like you already tried in dash, assuming sh -> dash.)

3) Create a new user account with only the default dotfiles, and see
   if you get the undesired results there.  (You may have to add it to
   the sudo group.)


Reply to: