sysprofile - modular centralized shell configuration
sysprofile is a generic approach to configure shell settings in a
modular and centralized way mostly aimed at avoiding work for lazy
sysadmins. It has only been tested to work with the bash shell.
It basically consists of the small /etc/sysprofile shell script which
invokes other small shell scripts having a .bash suffix which are
contained in the /etc/sysprofile.d/ directory. The system
administrator can drop in any script he wants without any naming
convention other than that the scripts need to have a .bash suffix to
enable automagic sourcing by /etc/sysprofile.
This mechanism is set up by inserting a small shell routine into
/etc/profile for login shells and optionally into /etc/bashrc and/or
/etc/bash.bashrc for non-login shells from where the actual
/etc/sysprofile script is invoked:
if [ -f /etc/sysprofile ]; then
For using "sysprofile" under X11, one can source it in a similar way
from /etc/X11/Xsession or your X display manager’s Xsession file to
provide the same shell environment as under the console in X11. See
the example files in /usr/share/doc/sysprofile/ for illustration.
For usage of terminal emulators with a non-login bash shell under X11,
take care to enable sysprofile via /etc/bash.bashrc. If not set this
way, your terminal emulators won’t come up with the environment defined
by the scripts in /etc/sysprofile.d/.
Users not wanting /etc/sysprofile to be sourced for their environment
can easily disable it’s automatic mechanism. It can be disabled by
simply creating an empty file called $HOME/.nosysprofile in the user’s
home directory using e.g. the touch(1) command.
Any single configuration file in /etc/sysprofile.d/ can be overridden
by any user by creating a private $HOME/.sysprofile.d/ directory which
may contain a user’s own version of any configuration file to be
sourced instead of the system default. It’s names have just to match
exactly the system’s default /etc/sysprofile.d/ configuration files.
Empty versions of these files contained in the $HOME/.sysprofile.d/
directory automatically disable sourcing of the system wide version.
Naturally, users can add and include their own private script
inventions to be automagically executed by /etc/sysprofile at login
There are no options other than those dictated by shell conventions.
Anything is defined within the configuration scripts themselves.
The README files and configuration examples contained in
/etc/sysprofile.d/ and the manual pages bash(1), xdm(1x),
xdm.options(5), and wdm(1x). Recommended further reading is everything
related with shell programming.
If you need a similar mechanism for executing code at logout time check
out the related package syslogout(8) which is a very close companion to
sysprofile in its current form is mainly restricted to bash(1) syntax.
In fact it is actually a rather embarrassing quick and dirty hack than
anything else - but it works. It serves the practical need to enable
a centralized bash configuration until something better becomes
available. Your constructive criticism in making this into something
better" is very welcome. Before i forget to mention it: we take
sysprofile was developed by Paul Seelig <firstname.lastname@example.org>
specifically for the Debian GNU/Linux system. Feel free to port it to
and use it anywhere else under the conditions of either the GNU public
license or the BSD license or both. Better yet, please help to make it
into something more worthwhile than it currently is.