Comments (10)
Similar support for PROMPT_COMMAND
(appended to precmd_functions
) would also be nice.
from bash-preexec.
the original PROMPT_COMMAND
should be preserved as part of PROMPT_COMMAND
still.
https://github.com/rcaloras/bash-preexec/blob/master/bash-preexec.sh#L270
We could also move it to the precmd_functions array as well.
from bash-preexec.
Ah, nice. Moving it to precmd_functions
(if that's what's done for the DEBUG
trap) would make sense assuming it wouldn't break anyone. Otherwise leaving it as-is is probably fine.
from bash-preexec.
Currently bash-preexec clobbers existing DEBUG traps when it is sourced.
I'm actually not sure this is true; I found that sourced scripts can't override an existing DEBUG trap. Worse, it seems from within the sourced script there's no way to tell whether a DEBUG trap was already set or not. I'm not sure if this FR is possible.
from bash-preexec.
@dimo414 I noticed this a little while back. The debug trap isn't actually set when sourcing the script. bash-preexec actually does a two part install where it hooks its install function first into PROMPT_COMMAND
and then runs setup through the invocation of that function. e.g. https://github.com/rcaloras/bash-preexec/blob/master/bash-preexec.sh#L306. and https://github.com/rcaloras/bash-preexec/blob/master/bash-preexec.sh#L241
Original commit for it: 4744d7e
from bash-preexec.
Well that's clever :) It would not have crossed my mind to try that. In that case it seems like it should be possible to add the trap to preexec_functions
with something like:
preexec_functions+=("$(trap -p DEBUG | sed "s/[^']*'\(.*\)'[^']*/\1/")")
There's probably a better way to extract the DEBUG command, but that worked in a pinch. I take it you're open to a pull request adding something along these lines?
from bash-preexec.
Of course! Please feel free to submit a PR 👍
from bash-preexec.
Closing addressed by @dimo414
from bash-preexec.
@dimo414 Realized this PR no longer preserves the second half of a user's PROMPT_COMMAND
. i.e. anything after the bash-preexec install commands. This is due to preserving PROMPT_COMMAND when it's first sourced and not as bash-preexec is being installed during the session init.
Lines 306 to 311 in f527a32
Any way that we can preserve any commands afterwards into precmd? e.g. a .bash_profile
like
PROMPT_COMMAND="foo"
source bash-preexec.sh
PROMPT_COMMAND="$PROMPT_COMMAND; bar"
would preserve both foo
and bar
.
I was originally doing this by parsing out the entire install string and then putting the original prompt command back into PROMPT_COMMAND:
https://github.com/rcaloras/bash-preexec/pull/50/files#diff-9f42bfd9f684d2763a4d12cc481506a1L244
from bash-preexec.
Trap is preserved and prompt command is fixed in 0.4.0.
from bash-preexec.
Related Issues (20)
- It's possible to prevent the execution of the command? HOT 4
- fc prints debug trap HOT 6
- Preexec is called when exiting bash with Ctrl-D HOT 2
- Return immediately when running in Zsh HOT 3
- [Bug] HISTCONTROL ignore* setting should be respected HOT 7
- `__bp_preexec_invoke_exec "$_"` printed when running multiple commads
- Tests fail with bats 1.5.0 HOT 7
- official way to detect whether bash-preexec is loaded HOT 2
- Line number exit outpu command ? HOT 1
- Bash 5.1 supports making PROMPT_COMMAND an array HOT 5
- ShellCheck highlights several issues with the file - Shellcheck could be disabled, or issues resolved HOT 2
- post_cmd functionality addition HOT 2
- Functions called in opposite order in midnight commander subshell HOT 2
- Some tests fail with bats 1.9 HOT 6
- preexec() does not work where as precmd() is working as intended. HOT 1
- Library Authors documentation can still lead to issues HOT 2
- preexec $1 is missing some commands HOT 1
- detailed bash log with preexec and precmd HOT 2
- Not working on Windows using Bash in MSYS2 HOT 7
- preexec doesn't work for no-op command `:`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bash-preexec.