am using the bash on different operating systems like Win32, Linux,
SGI's IRIX and Solaris. One global config file named .bashrc is doing
the job. Depending on the "uname" program (for Win32 available
within the cygnus project) I am
choosing the available programs on the given platform. Check it out
typical bash configuration looks like this:
Bash executes startup files.
Login shells (subject to the -noprofile option):
On logging in:
If `/etc/profile' exists, then
If `~/.bash_profile' exists, then source
else if `~/.bash_login' exists, then source
else if `~/.profile' exists, then source
On logging out:
If `~/.bash_logout' exists, source it.
For non-login interactive shells (subject to the -norc and -rcfile
On starting up:
If `~/.bashrc' exists, then source it.
For non-interactive shells:
On starting up:
If the environment variable `ENV' is non-null, expand the variable
and source the file named by the value. If Bash is not started in
Posix mode, it looks for `BASH_ENV' before `ENV'.
So, typically, your `~/.bash_profile' contains the line
`if [ -f `~/.bashrc' ]; then source `~/.bashrc'; fi' after (or before)
any login specific initializations.
If Bash is invoked as `sh', it tries to mimic the behavior of `sh'
as closely as possible. For a login shell, it attempts to source
only `/etc/profile' and `~/.profile', in that order. The `-noprofile'
option may still be used to disable this behavior. A shell invoked
as `sh' does not attempt to source any other startup files.
When Bash is started in POSIX mode, as with the `-posix' command
line option, it follows the Posix 1003.2 standard for startup files.
In this mode, the `ENV' variable is expanded and that file sourced;
no other startup files are read.
My .bashrc can be found here.
.bash_profile can be found here.
the Readline library comes with a set of Emacs-like key bindings
installed by default, it is possible that you would like to use
a different set of keybindings. You can customize programs that
use Readline by putting commands in an "init" file in
your home directory. The name of this file is taken from the value
of the shell variable `INPUTRC'. If that variable is unset, the
default is `~/.inputrc'.
When a program which uses the Readline library starts up, the init
file is read, and the key bindings are set.
In addition, the `C-x C-r' command re-reads this init file, thus
incorporating any changes that you might have made to it.
Init Constructs within readline
implements a facility similar in spirit to the conditional compilation
features of the C preprocessor which allows key bindings and variable
settings to be performed as the result of tests. There are three
parser directives used.
`$if' construct allows bindings to be made based on the editing
mode, the terminal being used, or the application using Readline.
The text of the test extends to the end of the line; no characters
are required to isolate it.
`mode=' form of the `$if' directive is used to test whether
Readline is in `emacs' or `vi' mode. This may be used in conjunction
with the `set keymap' command, for instance, to set bindings
in the `emacs-standard' and `emacs-ctlx' keymaps only if Readline
is starting out in `emacs' mode.
`term=' form may be used to include terminal-specific key bindings,
perhaps to bind the key sequences output by the terminal's function
keys. The word on the right side of the `=' is tested against
the full name of the terminal and the portion of the terminal
name before the first `-'. This allows SUN to match both SUN
and SUN-CMD, for instance.
APPLICATION construct is used to include application-specific
settings. Each program using the Readline library sets the APPLICATION
NAME, and you can test for it. This could be used to bind key
functions useful for a specific program.
command terminates an `$if' command.
in this branch of the `$if' directive are executed if the test
following command adds a key sequence that quotes the current or
previous word in Bash:
# Quote the current or previous word
.inputrc file is here
update by Hermann Heimhardt
on October 7, 2001
to the main page