I
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
here.
A
typical bash configuration looks like this:
How
Bash executes startup files.
For
Login shells (subject to the -noprofile option):
On logging in:
If `/etc/profile' exists, then
source it.
If `~/.bash_profile' exists, then source
it,
else if `~/.bash_login' exists, then source
it,
else if `~/.profile' exists, then source
it.
On logging out:
If `~/.bash_logout' exists, source it.
For non-login interactive shells (subject to the -norc and -rcfile
options):
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.
My
.bash_profile can be found here.
.inputrc
(readline)--
Although
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.
Conditional
Init Constructs within readline
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' |
The
`$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' |
The
`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' |
The
`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' |
The
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
sequences to
functions useful for a specific program. |
`$endif' |
This
command terminates an `$if' command. |
`$else' |
Commands
in this branch of the `$if' directive are executed if the test
fails. |
The
following command adds a key sequence that quotes the current or
previous word in Bash:
$if bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
My
.inputrc file is here
Last
update by Hermann Heimhardt
on October 7, 2001
Back
to the main page
|