rcaloras / bash-preexec

⚡ preexec and precmd functions for Bash just like Zsh.
MIT License
862 stars 94 forks source link

`__bp_preexec_invoke_exec "$_"` printed when running multiple commads #116

Open clupasq opened 3 years ago

clupasq commented 3 years ago

I originally discovered this when using bash-it, and posted an issue there as well: https://github.com/Bash-it/bash-it/issues/1895 I'm reproducing the relevant bits:

Ctrl + X, Ctrl + E allows opening the current bash command in the default editor. I sometimes to this to enter multiple commands (separated by newline). After saving and exiting the editor, the commands are run as expected.

For the examples below I'll consider the following commands:

echo 1
echo 2
echo 3

Expected Behavior

What is expected is that only the commands and their results are being printed to the console. Here's an example of such an interaction without bash-it:

$> echo # <== at this point I fired up the editor to type in the aforementioned command(s).
echo 1
1
echo 2
2
echo 3
3

Current Behavior

Here's what's being printed when using bash-it:

❯ echo # <== using the editor to type in the commands again
echo 1
__bp_preexec_invoke_exec "$_"
1
echo 2
__bp_preexec_invoke_exec "$_"
2
echo 3
__bp_preexec_invoke_exec "$_"
3

I'm not sure if this is a bug; it may be the intended behavior, so please confirm.

Steps to Reproduce

  1. Press Ctrl + X, Ctrl + E on the command line
  2. Use the editor to enter more than one command (newline separated)
  3. Save && exit
  4. Inspect the output. You're likely to see the expected output, plus some __bp_preexec_invoke_exec "$_" lines between each command and its output.

Environment