On 26/07/2022 05:46, наб wrote:
Package: coreutils
Version: 8.32-4+b1
Severity: minor

Dear Maintainer,

Quoth upstream NEWS:
-- >8 --
* Noteworthy changes in release 8.31 (2019-03-10) [stable]

** New features

   env now supports '--default-signal[=SIG]', '--ignore-signal[=SIG]', and
   '--block-signal[=SIG], to setup signal handling before executing a program.

   env now supports '--list-signal-handling' to indicate non-default
   signal handling before executing a program.
-- >8 --

Quoth env(1):
-- >8 --
        --block-signal[=SIG]
               block delivery of SIG signal(s) to COMMAND

        --default-signal[=SIG]
               reset handling of SIG signal(s) to the default

        --ignore-signal[=SIG]
               set handling of SIG signals(s) to do nothing

        SIG may be a signal name like 'PIPE', or a signal number like '13'.  
Without SIG, all known signals are included.  Multiple signals can be 
comma-separated.
-- >8 --

However:
-- >8 --
$ env -v --block-signal=1 ls /dev/null
signal HUP (1) mask set to BLOCK
executing: ls
    arg[0]= ‘ls’
    arg[1]= ‘/dev/null’
/dev/null
$ env -v --block-signal ls /dev/null 2>&1 | paste - - - -
signal HUP (1) mask set to BLOCK        signal INT (2) mask set to BLOCK        
signal QUIT (3) mask set to BLOCK       signal ILL (4) mask set to BLOCK
signal TRAP (5) mask set to BLOCK       signal ABRT (6) mask set to BLOCK       
signal BUS (7) mask set to BLOCK        signal FPE (8) mask set to BLOCK
signal KILL (9) mask set to BLOCK       signal USR1 (10) mask set to BLOCK      
signal SEGV (11) mask set to BLOCK      signal USR2 (12) mask set to BLOCK
signal PIPE (13) mask set to BLOCK      signal ALRM (14) mask set to BLOCK      
signal TERM (15) mask set to BLOCK      signal STKFLT (16) mask set to BLOCK
signal CHLD (17) mask set to BLOCK      signal CONT (18) mask set to BLOCK      
signal STOP (19) mask set to BLOCK      signal TSTP (20) mask set to BLOCK
signal TTIN (21) mask set to BLOCK      signal TTOU (22) mask set to BLOCK      
signal URG (23) mask set to BLOCK       signal XCPU (24) mask set to BLOCK
signal XFSZ (25) mask set to BLOCK      signal VTALRM (26) mask set to BLOCK    
signal PROF (27) mask set to BLOCK      signal WINCH (28) mask set to BLOCK
signal POLL (29) mask set to BLOCK      signal PWR (30) mask set to BLOCK       
signal SYS (31) mask set to BLOCK       signal RTMIN (34) mask set to BLOCK
signal RTMIN+1 (35) mask set to BLOCK   signal RTMIN+2 (36) mask set to BLOCK   
signal RTMIN+3 (37) mask set to BLOCK   signal RTMIN+4 (38) mask set to BLOCK
signal RTMIN+5 (39) mask set to BLOCK   signal RTMIN+6 (40) mask set to BLOCK   
signal RTMIN+7 (41) mask set to BLOCK   signal RTMIN+8 (42) mask set to BLOCK
signal RTMIN+9 (43) mask set to BLOCK   signal RTMIN+10 (44) mask set to BLOCK  
signal RTMIN+11 (45) mask set to BLOCK  signal RTMIN+12 (46) mask set to BLOCK
signal RTMIN+13 (47) mask set to BLOCK  signal RTMIN+14 (48) mask set to BLOCK  
signal RTMIN+15 (49) mask set to BLOCK  signal RTMAX-14 (50) mask set to BLOCK
signal RTMAX-13 (51) mask set to BLOCK  signal RTMAX-12 (52) mask set to BLOCK  
signal RTMAX-11 (53) mask set to BLOCK  signal RTMAX-10 (54) mask set to BLOCK
signal RTMAX-9 (55) mask set to BLOCK   signal RTMAX-8 (56) mask set to BLOCK   
signal RTMAX-7 (57) mask set to BLOCK   signal RTMAX-6 (58) mask set to BLOCK
signal RTMAX-5 (59) mask set to BLOCK   signal RTMAX-4 (60) mask set to BLOCK   
signal RTMAX-3 (61) mask set to BLOCK   signal RTMAX-2 (62) mask set to BLOCK
signal RTMAX-1 (63) mask set to BLOCK   signal RTMAX (64) mask set to BLOCK     
executing: ls      arg[0]= ‘ls’
    arg[1]= ‘/dev/null’  /dev/null
$ env -v --block-signal= ls /dev/null
executing: ls
    arg[0]= ‘ls’
    arg[1]= ‘/dev/null’
/dev/null
-- >8 --

Precedent dictates that an empty argument should be refused (right?),
practicality suggests that it's likely a mistake
(since, again, it does nothing).
and the manual says it's forbidden
(clumsily using SIG and prose to describe signal[,signal]...).

Best,
наб

-- System Information:
Debian Release: 11.4
   APT prefers stable-updates
   APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
'stable-debug'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.10.0-16-amd64 (SMP w/24 CPU threads)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_FIRMWARE_WORKAROUND, 
TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages coreutils depends on:
ii  libacl1      2.2.53-10
ii  libattr1     1:2.4.48-6
ii  libc6        2.31-13+deb11u3
ii  libgmp10     2:6.2.1+dfsg-1+deb11u1
ii  libselinux1  3.1-3

coreutils recommends no packages.

coreutils suggests no packages.

-- no debconf information


Not a bug I think.

"Empty" and "No" arguments are separate cases.
I.e. `env --block-signal=` is equivalent to `env --block-signal ""`.
This distinction is useful if passing a dynamic arg like:
  env --block "$SIGS_TO_BLOCK"

thanks,
Pádraig

Reply via email to