Configuration Information [Automatically generated, do not change]: Machine: x86_64
OS: linux-gnu Compiler: gcc Compilation CFLAGS: -g -O2 -Wno-parentheses -Wno-format-security uname output: Linux nas 5.15.85 #1-NixOS SMP Wed Dec 21 16:36:38 UTC 2022 x86_64 GNU/Linux Machine Type: x86_64-pc-linux-gnu Bash Version: 5.1 Patch Level: 16 Release Status: release Description: When running a command in interactive mode (i.e. bash -ic '/some/command') a bash script will stop itself and put it in the background unexpectedly. Repeat-By: Take the following script: #!/usr/bin/env bash # Run some command in an interactive shell $SHELL -ic '/usr/bin/env echo hello' export IN_SHELL_TEST=true # Launch a new $SHELL with modified environment $SHELL -i A typical session looks like this: $ ./shell-test hello [1]+ Stopped ./shell-test $ echo $IN_SHELL_TEST $ fg ./shell-test $ echo $IN_SHELL_TEST true This is very unexpected behavior. I would expect to launch directly into the new shell, rather than have it start in the background. Fix: Alex Shpilkin discovered that disabling ONESHOT optimization prevents the bug from presenting. He did this by recompiling bash after removing '#define ONESHOT'. Another mitigation is to prefix the first command with `exec`, for example: $SHELL -ic 'exec /usr/bin/env echo hello'