A better Linux shell? [closed]
You do realize bash 4
has very recently been released with a load of new features and language additions?
- Shell options
globstar
(**/foo
) does a recursive search,dirspell
fixes typos during pathname expansion. - Associative arrays, map strings to strings, instead of just numbers to strings.
- The
autocd
shell option allows changing directories by just typing the directory path instead of having to putcd
in front. - Coprocesses
&>>
and|&
redirection operators that redirect bothstdout
andstderr
- Loads of additions to existing builtins for improved scripting convenience.
Check out:
- The "official" changelog: http://tiswww.case.edu/php/chet/bash/CHANGES
- A short guide to some of the new features: http://bash-hackers.org/wiki/doku.php/bash4
One of the least touted features of Bash (and several other shells) is the ability to write your own loadables, and have the shell run them as builtins.
Lets say you write the loadable 'on' .. and you want it to work like this:
on node 123 run some commandon class nodes run some commandon all nodes run some command
... etc ..
You can follow simple examples on how to write a loadable, then enable it as a bash built in via enable -f /path/to/loadable loadable_name
So in our case, enable -f /opt/bash/loadables/on on
... in your bashrc , and you've got it.
So, if you want to have bash interpret your spiffy new language natively, you would write a loadable named 'use' or 'switch_to', then modify the parser to load a different grammar / runtime if a certain environment variable was set.
I.e.:
#/bin/bashswitch_to my-way-cool-languagefunkyfunc Zippy(int p) [[ jive.wassup(p) ]]
Most people are not going to want to hack their shell, however. I did want to point out that facilities exist to take Bash and make it the way you want it, without fiddling too much with core code.
See /path-to-bash-source/examples/loadables, you might be able to get that to fly where you work, since you're still using Bash.