Comments (8)
It may be an anti-pattern, but I think it'd be best not to make that choice on behalf of the user. Shells are highly personal things and the less we make them break in mysterious ways for our users, the better, even if they've made strange choices to get there.
The main practical issue is when code that breaks "nounset" is reached from the debug trap that bash-preexec installs, which means the user can't even safely use nounset in contexts where it to all appearances is neatly scoped to their own code. However, it's easier to just make the entire script nounset-safe rather than to try to reason about what is reachable from where.
Supporting it is easy, the only difficulty is supporting it consistently. And given that this happens to be a bash script with a test suite, even that shouldn't be hard. I have the necessary code and test changes in a local client -- will try to put together a PR tomorrow.
from bash-preexec.
Any update on this -- decision to pull or not?
As mentioned this is an issue arising from actual usage. Maintaining a patch for this locally would be somewhat painful for me, since it's so easy to introduce an incompatibility if the tests upstream aren't covering it.
from bash-preexec.
Personally, I don't think supporting -u
is worth the effort. If you can make it work great, but I think using it (in your shell) is generally an anti-pattern.
+1 for swapping to the bats-core fork though.
from bash-preexec.
@steinarvk Thanks for the PR and all the reasoning + logic behind it! On first glance, I agree with @dimo414 that setting -u
in your shell is an anti-pattern and question if it's worth trying to maintain it in bash-preexec. Looking at the code, I feel it also lowers the readability by inserting {*:-}
in tons of places.
Do you personally or are you running into users who are having this issue at Google because they set it in their shells? Or they're setting it as part of their preexec functions and it's causing bash-preexec to break?
from bash-preexec.
Can confirm that it's not a theoretical concern, but based on an actual user issue. (See the "main practical issue" paragraph: I've not seen anyone setting "set -u" for their entire shell, but I've seen reasonable-seeming usage bleeding into bash-preexec somehow.)
from bash-preexec.
@steinarvk Planning to merge this. Give me a day or two. I want to cut a release with it. Thanks for your patience and contributions.
from bash-preexec.
Awesome, thanks.
from bash-preexec.
Merged. Will try to cut a release later this evening.
from bash-preexec.
Related Issues (20)
- 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 `:`
- `bash-preexec` will cause `hishtory` to be particularly time-consuming for commands including pipeline.
- New release when?
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.