Are you tired of trying to remember what
.bashrc does vs
Are you tired of trying to remember how Darwin (Mac OS X) treats them differently from Linux?
Are you tired of not having your
~/.bash* stuff work the way you expect?
Symlink all of the following files to
And then you can use these instead:
~/.bashrc_all: sourced on every bash instantiation;
~/.bashrc_script: sourced only when non-interactive;
~/.bashrc_interactive: the one you'll probably fill up (mutually exclusive with
~/.bashrc_login: sourced only when an interactive shell is also a login.
~/.bashrc_allwill always be run first.
- Then either
~/.bashrc_interactivewill be run next depending on whether or not the bash invocation is interactive.
- Finally, sometimes, like when you first ssh into a machine or often when
opening a new terminal window on a mac, the
~/.bashrc_loginwill be run after the
~/.bashrc_loginis the one where you'd echo a banner or whatever.
In addition to the dispatching, you'll forever have the following available:
The functions are meant for clean conditionals in your new
$ shell_is_linux && echo 'leenux!'
or something like:
$ if shell_is_interactive ; then echo 'interact' ; fi
And now I think these comments have reached parity with the code itself which should be easy to extend.
There are few knobs you can turn to make
bashrc_dispatch behave as you prefer.
EXPORT_FUNCTIONS: set it to
falseto disable the export of
$SHELL_PLATFORMand all the
shell_is_*functions and avoid polluting all the other shells' environments.
- Joseph Wecker (initial author)
- Gioele Barabucci http://svario.it/gioele (fixes and optimizations)
Report issues : https://github.com/gioele/bashrc_dispatch/issues
This is free software released into the public domain.