Mailinglist Archive: opensuse (3378 mails)

< Previous Next >
FYI: SuSE 7.3 Bash initialization
  • From: Keith Winston <kwinston@xxxxxxxxxxx>
  • Date: Thu, 11 Apr 2002 11:56:32 -0400
  • Message-id: <20020411115632.A3175@xxxxxxxxxxxxxxxxxxxx>
A lot of things happen when you login to SuSE with a bash shell. I've
tried to document where important things are happening here in case you
want to know. If not, please ignore :)

If someone sees a glaring error, please let me know. I realize that
some of this will likely change in 8.0, but it still may be useful.

Best Regards,
Keith


SuSE 7.3 BASH INITIALIZATION

note: The process works a little differently if you
are running a different shell (zsh, ksh, [t]csh, etc.)

The files are processed in this order:

/etc/profile -- global config, initializes the terminal (sets the TERM
variable and unsets TERMCAP since SuSE uses terminfo instead of
termcap), sets umask 022, sets initial PATH, MANPATH and a few other
variables, sources /etc/SuSEconfig/profile, sources all *.sh files in
/etc/profile.d/, sources /etc/bash.bashrc, sources ~/.bashrc. It
includes code to prevent ~/.bashrc from running more than once depending
on whether it has already been executed.

/etc/SuSEconfig/profile -- this file is generated by SuSEconfig from
settings in the /etc/rc.config file. It sets language environment
variables, KDEDIR, QTDIR, PRINTER and WINDOWMANAGER.

/etc/profile.d/*.sh -- application specific settings such as
jade_dsl.sh, medusa-idled.sh (search engine used by nautilus),
sp.sh, tetex.sh. Most of these were not activated for my
installation.

/etc/bash.bashrc -- sets some shell functions (startx and remount),
also sets some aliases (+=pushd, -=popd, o=less, others), sets the
PS1 variable which controls the format of the prompt, sets other
variables, if bash 2.0+ it also sources
/etc/profile.d/complete.bash.

/etc/profile.d/complete.bash -- sets a couple of shell options
(shopt), customizes the bash "complete" builtin behavior (file
completion). SuSE did some serious work to optimize this part
of the bash configuration.

~/.bashrc -- finally, your own bash settings are run. You can
override anything that has been set previously since this file is
sourced last (prompt, variables, etc.). The default SuSE .bashrc
includes code to check for /etc/profile.dos and sources it if it
exists. It also checks for ~/.alias and sources it if it exists.

/etc/profile.dos -- sets up aliases for DOS commands (del, move,
copy, etc.)

~/.alias -- best place to put your custom alias definitions.


Then, bash looks for additional config files to run...

For login shells, it looks for these files, in order, and executes
commands from the FIRST one that exists and is readable.

~/.bash_profile -- doesn't exist by default.

~/.bash_login -- doesn't exist by default. You can create it and put
custom commands here that you only want to happen once when you first
login. If this file exists, the the ~/.profile will not run. Normally,
this is not a problem since ~/.profile does not do much and the
~/.bashrc gets sourced from /etc/profile.

~/.profile -- sets LANG variable, sources /etc/profile IF it has not
already been run (checks PROFILEREAD variable), sources ~/.bashrc, runs
the fortune program if you uncomment it.


For interactive non-login shells, bash looks for this file:
~/.bashrc -- this is where most custom user settings should go.

When you logout, it looks for this file:
~/.bash_logout -- file doesn't exist by default. If you want to do
something every time you logout, create this file and load it up.


< Previous Next >