Are there any well known and well used shell scripting IDEs for Un*x?
I wouldn't say it is either well known or well used but you might have a look to basheclipse:
I must admit I have no experience with basheclipse and even failed to install it due to an eclipse version mismatch.
On the other hand, I'm using bash and ksh93 specific debugging features, especially the trap ERR
and trap DEBUG
ones but not the debuggers based on them kshdb and bashdb
A purpose-built IDE would sort of defeat the purpose of shell scripting, not to mention that it's nearly impossible to do, because most of what shell does is calling external commands - how do you debug that? Debugging with checkpoints is counterintuitive for a shell - shell scripts usually operate heavily on files and thus have destructive side-effects on every call. Scripting BY DESIGN works line-by line, so your "environment" is actually the terminal itself - you can always echo variables, your environment is always there for you, there is no "prescribed flow" that you would have to interrupt. You progressively do whatever you want to do, line by line, testing each time if you got what you wanted and then paste these lines into a script to use again. Any IDE would actually just disable most of what you can do in the shell itself.
For fully qualified scripting languages (Python, Perl etc) you do have all this, but bash/zsh/ksh/... are interactive "glue" for other commands and are their own debuggers.
However, most text editors will highlight the code for you, and emacs
will (provided you find the right packages, I never bothered with doing that for shell scripts) provide programmable keyword completion. I believe vi
can do that as well (don't start a flamewar here please).
I also endorse the idea of using an IDE for bash scripts.
One can write bash scripts using the jupyter notebook.
The jupyter notebook can be installed via anaconda while a bash kernel for jupyter notebook (or jupyterlab) can be installed with the following commands (source):
pip install bash_kernel
and
python -m bash_kernel.install
After that, you can select bash on a new launcher instance of anaconda navigator, as shown below.
The only thing is that (as far as I know) it does not work with commands that you have to input to the prompt, such as read
or any other argument that you pass after calling the script. But other than that, it works pretty well.