syslogout - modular centralized shell logout mechanism
is a generic approach to enable centralized shell logout
actions for all users of a given system 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/syslogout
shell script which
invokes other small shell scripts having a .bash
suffix which are
contained in the /etc/syslogout.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 the
For shell sessions, the contents of /etc/syslogout.d/"
sourced by every user at logout if the following lines are present in his
if [ -f /etc/syslogout ]; then
If used for X sessions it is advisable to include the former statement into the
script of the X display manager instead to prevent that closing
of an terminal emulator window yields unexpected results in your running X
session if your X11 terminal emulator is using a login shell. Be sure then to
run it under the user-id of the X session's user. See the example files in
Users not wanting /etc/syslogout
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/.nosyslogout
in the user's home directory
using e.g. the touch(1)
Any single configuration file in /etc/syslogout.d/
can simply be
overridden by any user by creating a private $HOME/.syslogout.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/syslogout.d/
Empty versions of these files contained in the $HOME/.syslogout.d/
directory automatically disable sourcing of the system wide version.
Naturally, users can add and include their own private scripts to be
automagically executed by /etc/syslogout
at logout time.
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
and the manual page for bash(1),
reading is everything related with shell programming.
If you need a similar mechanism for executing code at login time check out the
related package sysprofile(8)
which is a very close companion to
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 patches... ;-)
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.