\documentclass{article}
\usepackage{fullpage}
\usepackage{epsf}

\newcommand{\PSbox}[3]{\mbox{\special{psfile=#1}\hspace{#2}\rule{0pt}{#3}}}

\def\thesection {\arabic{section}}
\def\thesubsection {\thesection.\arabic{subsection}}
\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}

\begin{document}
\newcommand{\til}{\mbox{$\sim$}}

\begin{center} 

\PSbox{cover-owl.PS}{200pt}{200pt} 

\vspace{1in}

{\Huge Inessential Dotfiles\footnote{Copyright \copyright\ 1999
The Student Information Processing Board of the Massachusetts Institute of 
Technology}}

\vspace{.2in}

{\huge Version 0.8}

\vspace{.2in}

{\tt /afs/sipb.mit.edu/project/doc/idotfiles/iDotfiles.dvi}

\vspace{.2in}

The Student Information Processing Board

\vspace{.2in}

Heather~Drake~{\tt <pipa@mit.edu>},
Camilla~Fox~{\tt <cfox@mit.edu>},
David~Golombek~{\tt <daveg@mit.edu>}

\vspace{.2in}

\today

\end{center}

\pagestyle{empty}

\newpage

\pagestyle{plain}

\tableofcontents

\newpage

\section{Introduction}

The aim of this document is to help you understand what goes on when you
log in on an Athena terminal, and to help you to customize your own login session.
This sequence of events
% Exactly what happens when you log in
is controlled by the scripts that
are run when you log in, and the configuration files associated with some
programs.  Of these scripts
and configuration files, your dotfiles are those which live in your home directory and have
names which begin with a\ `.'\ (out of convention).
You can list what dotfiles you have by doing {\tt ls -a}, which tells ls to show files
which it normally hides.
% do not confuse them with your other files,
% you do need the {\tt -a} for ls to list them. 
This document will cover what happens
to a default account when it's user logs on, and the ways in which you can modify this
default behavior.\footnote{Both terminal and dialup logins are covered.}
Note that all of the material covered here is subject to
change without notice.  We will try to keep it current, but may fall
behind, so beware.

\subsection{What do I have to know?}

You don't need to already know C or any other
programming language to customize your login.  Most Athena dotfiles are written in csh,
which is a scripting language, whose syntax is intended to loosely resemble C.
Learning csh can help in
writing dotfiles, but is not necessary for simple modifications.
Generally, all that is needed is an interest in what the
computer is doing, and the willingness to spend some time
experimenting.

\subsection{What do I gain from knowing about dotfiles?}  % 1.2

By modifying your dotfiles, you will be able to customize your login session
so that it's more aesthetically pleasing, more productive, and more
personalized.  By adding aliases, you can save keystrokes on the command
line.  By adding commands to a startup file, you avoid having to
manually start the same programs every time you log on.  Modifying your
dotfiles is a great way to begin deeper explorations of computers and
programming.

\subsection{Other sources of information}  % 1.3

Because of its scope, this document makes certain assumptions about your knowledge of
UNIX.  If you want to learn more about UNIX,
there are a variety of sources of information.  Man pages should exist
for all of the commands used in this file (if they don't, it's a bug,
which should be reported using {\tt sendbug}).  Other SIPB Inessential
guides and the publications from IS are also great sources of information; 
SIPB Inessential Guides can be found at {\tt http://www.mit.edu/sipb/docs.html}
or {\tt /mit/sipb/doc/} and you can visit {\tt http://web.mit.edu/is/pubs}
for a listing of IS publications.
It is recommended that you understand each of
the commands that you are using before you put them in your dotfiles, so that
you can fix your dotfiles if things go wrong.

\section{What happens before I log on?}

When you walk around an Athena cluster, you might notice
that the unused machines are
running a program called xlogin.  This program is responsible for
the message that bounces around the screen and for the username and 
password box that pop up when you press a key.  Xlogin also allows
you to run certain programs without logging in, such as xcluster, as
well as to specify several different login options.
% Finally, and most importantly, it gives you several options about
% logging in.

Similarly, a machine which you can telnet to, such as the athena dialups, is running a program,
telnetd, which accepts the connection, then runs a program called
login, similar to xlogin, described above.  Such a login (which also
occurs when using rlogin, ssh, or the {\bf Terminal-style session} from
xlogin) is called a TTY login.  The sequence of dotfile execution is
substantially different for TTY logins than for X logins, and is
covered separately in Section~\ref{TTY}.

\newpage  % The Overview section should all go on one page

\section{Overview}  % 3

There is a complex sequence of different files that are run (or
sourced\footnote{To source a file means to run {\tt source filename}, which has the same
effect as executing that file, except that it modifies environment variables in your
current environment, rather than creating a new shell and keeping all such modifications
within it.}) during a login session.  This sequence is described by the following diagram.
%This listing is very useful in for determining what
%file caused a specific configuration.
%% enh.

\begin{itemize}
\item User types their username and password into xlogin.
\item xlogin runs the sh script, /etc/athena/login/Xsession, which:
\begin{enumerate}
	\item Makes Athena keymap modifications, if required
	\item Sources \til/.xsession\footnote{This will substantially change
	the behavior of your login.}, if it exists, otherwise sources
	/usr/athena/lib/init/xsession, which:
	\begin{enumerate}
		\item Checks for \til/.hushlogin
		\item Sets the XSESSION environment variable
		\item Sources \til/.cshrc\footnote{If you change your shell,
		this will be a different file, but in the case of a supported
		shell, the effect should be similar.}
		\begin{enumerate}
			\item Sources /usr/athena/lib/init/cshrc, which:
			\begin{enumerate}
				\item Sets the variables athena\_path, hosttype, bindir,
				   athena\_manpath, home
				\item Sets the environment variables: MORE, EDITOR, VISUAL, MM\_CHARSET,
				   MANPATH, ATHENA\_SYS, ATHENA\_SYS\_COMPAT, PRINTER
				\item Sources \til/.environment
				\item Sets path using \$athena\_path
				% .path is deprecated - removing all mention of it outside
				% of it's own section
				\item Sets prompt, history, cdpath,
				   interactive
				\item Aliases renew, term, mail, Mail, xresize,
				    logout, add, setup, setup\_X, setup\_tty, remove
				\item Sources \til/.cshrc.mine
			\end{enumerate}
		\end{enumerate}
	\item Loads the Xresources, by running {\tt xrdb -merge \til/.Xresources}
	\item Starts window manager, mwm\footnote{4dwm is run instead of mwm, if you
	are on an SGI, and have not set skip\_sgi.} unless another has been specified
	\item Starts dash, unless skip\_dash is set
	\item Creates logout button, unless skip\_xlogout is set
	\item Starts initial xterm, unless skip\_initial\_xterm is set
	\item Starts zwgc (a zephyr client), checks for a new message of the day,
	checks for new mail, and pings the OLC server, all unless skip\_x\_startup is set
	\item Sources \til/.startup.X\footnote{\til/.startup.sgi is sourced instead, if
	you are logging in on an SGI, and skip\_sgi is not set.}
	\item Prepares for logout with ``exec session\_gate -logout''
	\item Waits for user to logout
	\item Sources \til/.logout
\end{enumerate}
\item Runs kdestroy, unlog, and fsid -u -f \$USER
\end{enumerate}
\end{itemize}

The rest of this document will attempt to cover these dotfiles
in greater depth, and to give you a feel for ways to make modifications.

\newpage

\section{The default dotfiles}  % 4

When you logged into Athena for the first time, there was already a
default set of dotfiles in your home directory.  If you have modified or
deleted them, and you want to get the original ones back, you can
make copies of the ones in /usr/prototype\_user/.
This section covers what happens
when you log in with these default dotfiles.

\subsection{/etc/athena/login/Xsession}  % 4.1

The xlogin program runs a script called Xsession, located in
/etc/athena/login on all standard Athena workstations.  This script
does very little under the normal login sequence.  It
sets the TTY (Teletype Terminal) characteristics to defaults for
interactive use, and uses xmodmap to set Athena keymap modifications if required
for that type of computer, then executes the script below.  After
/usr/athena/lib/init/xsession returns, Xsession is also responsible for
clean up tasks such as destroying your kerberos tickets and your afs tokens.

\subsection{/usr/athena/lib/init/xsession}  % 4.2

This is probably the most important of the startup scripts.  This
script both starts some of the most important programs and sources
other files that control the rest of your login.  

This script first checks for the existence of a \til/.hushlogin, which
tells the login scripts to avoid printing status messages.  It
then sets the XSESSION environment variable, which is later used to
determine if this is a X or TTY login.

Next, this script sources the \til/.cshrc file, covered below, which in
turn sources many user controllable files (most importantly,
\til/.cshrc.mine and \til/.environment).  Among the possible uses
of these files, they also serve as a place to set configuration parameters
for the continued running of /usr/athena/lib/init/xsession.

After completing the sourcing of these user files, it begins to
configure the X Window system.  It does this with the command
\begin{verbatim}
xrdb -merge ~/.Xresources
\end{verbatim}
For more information on this file, see Section~\ref{Xresources}.
Finally, the window manager itself is started.  The default Athena
window manager is the Motif Window Manager, but users can select others
by setting the WINDOW\_MANAGER environment variable (see Section~\ref{Environment}).

Next, xsession goes through and starts a wide variety of programs.
Each of these programs has a skip\_{\it programname} variable
associated with it, which, if set, prevents the program from being
run.  Each of these programs are listed below, along with a brief
description, and the skip\_{\it programname} variable to set to skip it.

\begin{itemize}
\item Dash: (skip\_dash) The menu bar appearing at the top of the
screen, allowing programs to be run by clicking on their menu item.
\item Xlogout: (skip\_xlogout) The button you can click to log
out of a workstation.
\item Initial Xterm: (skip\_initial\_xterm) The first xterm to be
started on your screen.
\item X Startup Activities: (skip\_x\_startup) This runs zwgc (the
zephyr windowgram client), gets the message of the day (motd), runs a
mail check, and pings the OLC server to check for outstanding messages
from OLC.
\item Lert: (skip\_lert) Shows any Athena Accounts messages to you\footnote{It
is recommended that you do not skip lert unless you are planning to run it
somewhere else in your dotfiles.}
(such as account deactivation warnings).
\end{itemize}

% this used to be confusing; I'm not sure that it actually needs to
% be said, but at any rate, I've made it make sense -- cfox
If you set variables to skip any aspect of xsession's usual sequence
make sure that you have a method of replacing its functionality.  For
example, if you set skip\_dash, you will need to remember where to find
all the programs that you normally use, and if you skip\_initial\_xterm
as well, you will need to provide yourself with a way to get a shell.

Once the selected combination of programs have been run, xsession runs
any programs that the user specifies in their \til/.startup.X file (see Section~\ref{StartupX}).

Finally, the xsession file goes to sleep until the user is done with
the login session.  This is done using the command
\begin{verbatim}
exec session_gate -logout
\end{verbatim}
which waits until the Athena session is done, then executes the
\til/.logout file (covered below) and exits.

\subsection{\til/.cshrc}  % 4.3
\label{Cshrc}
The \til/.cshrc sources other files and sets your path
(the directories that are searched for programs you type on the command
line).  
The recommended method of adjusting the csh initialization sequence
is to create any of the following files (listed with the section in
which it is covered):

\begin{itemize}
\item \til/.environment: Section \ref{Environment}
% \item \til/.path: Section \ref{Path}
% again.  .path is deprecated
\item \til/.cshrc.mine: Section \ref{Cshrc.Mine}
\end{itemize}

% if we're going to be discouraging about what people should modify,
% the .cshrc really is one to discourage touching (this below used
% to be rather contradictory -- cfox
While your \til/.cshrc seems an obvious file to modify, remember that
unless you are removing or changing functionality, you will be better off making
a \til/.cshrc.mine and putting your customizations there.
If you do modify your \til/.cshrc, be careful, because if you don't in turn source
/usr/athena/lib/init/cshrc (see below), you will not automatically
get any changes that Athena may make to the system-wide file at a
later date.  Be sure you know what you are doing, and plan on keeping
track of changes to Athena.  In reality, these sytem-wide files are
changed very rarely.

Also note that this file will be sourced by your shell, every time you start a new
shell instantiation (such as an xterm window).  Thus, the less you do
within this file (and the files it sources), the faster your xterms
will load.

\subsection{/usr/athena/lib/init/cshrc}  % 4.4

This file is responsible for setting up several default variables for
all Athena users.  It sets both shell and environment variables, which
are listed below, with a brief description of what they do.  More
information on the effects of these variables on the shell can be found
with {\tt man tcsh}.  Since tcsh is based on csh, {\tt man csh} will
also be useful.
\vspace{2mm}

Shell Variables 
\begin{itemize}
\item{\tt athena\_path} Generic path before any lockers are added  
\item{\tt hosttype} Machine type
\item{\tt bindir}\footnote{This is deprecated.} Directory in which to find binaries for this platform  
\item{\tt athena\_manpath} Default search path for man files  
\item{\tt host} The hostname of the machine
\item{\tt autolist} List choices when tab completing
\item{\tt home} Home directory (\til) for user  
\item{\tt noclobber} Don't overwrite files with redirection  
\item{\tt prompt} The default shell prompt
\item{\tt history} Number of commands saved in shell history  
\item{\tt cdpath} Path to search for directory changes  
\item{\tt interactive} Allow editing of commands typed to the shell
\item{\tt nostat} Don't tab complete within specific directories (on
  Athena, this is used to prevent accidentally stating /afs which
  would take a long time and tie up your shell)
\end{itemize}

Environment Variables
\begin{itemize}
\item{\tt EDITOR} Sets the editor that programs will start by default 
\item{\tt VISUAL} Similar to EDITOR, but used by programs which do not wish to assume
that your editor is not a line editor
\item{\tt MM\_CHARSET} Default character set
\item{\tt MANPATH} Default search path for man files (set to same as \$athena\_manpath) 
\item{\tt ATHENA\_SYS, ATHENA\_SYS\_COMPAT} Used by the add alias when adding lockers and modifying path and manpath
\item{\tt PRINTER} Default printer to use
\end{itemize}

Aliases
\begin{itemize}
\item{\tt renew} Renew Kerberos tickets after they have expired
\item{\tt term} Change terminal type
\item{\tt xresize} Update terminal settings to the current size of the xterm
\item{\tt logout} Kill the session gate, and exit the current shell, causing the user to logout
\item{\tt add} Attach a locker, then add it to path and manpath
\item{\tt setup} Add a class locker, and run its startup script
\item{\tt remove} Remove a class locker
\end{itemize}

As well as setting these variables and aliases, \til/.cshrc
sources your \til/.environment, and your \til/.cshrc.mine, should they
happen to exist.

\section{Optional dotfiles}  % 5

The section outlines the dotfiles which are not created by default, but which
are used, if they exist.

\subsection{\til/.hushlogin}  % 5.1

The default dotfiles will avoid printing status messages if this file exists.

\subsection{\til/.environment}  % 5.2
\label{Environment}
This is a good place in which to add or attach lockers that you
expect to need during your session.  Due to the slowness of invoking
attach, it is recommended that you do all of your adds or attaches
on a single line.  For example:
\begin{verbatim}
add graphics outland sipb
\end{verbatim}

\subsection{\til/.path}  % 5.3
\label{Path}
% this is clumsy
The usage of \til/.path is deprecated, although if you have added
customizations already, you might have one.  If you are using it,
it will be sourced by your \til/.cshrc.  The recommended tool for
customizing your path shell variable is add, which increased
in functionality with the 8.2 (1998) release, such that you can use it to put
a specific directory in your path, instead of only lockers.

\subsection{\til/.cshrc.mine} % 5.4
\label{Cshrc.Mine}

This is the suggested place to set custom variables for (t)csh,
create aliases, unset sytem defaults, and other shell customizations.
Some popular tcsh specific\footnote{If you ever have reason to run csh,
it will also source this file, which may cause problems, if you use
tcsh specific features.} things to do in your \til/.cshrc.mine
include:
\begin{verbatim}
set prompt = '[%n@%m]%c%# '     # initialize prompt
set fignore = '~'               # ignore ~ files when tab completing
alias zw 'zwrite'               # shorten frequently used commands
alias cp 'cp -i'                # don't accidentally overwrite files with cp
\end{verbatim}
% set lineedit isn't necessary except on really ancient things.
% set prompt more interesting this way

\subsection{\til/.Xresources}  % 5.5
\label{Xresources}
The xsession runs xrdb on ~/.Xresources.
In brief, xrdb loads the specifications listed in this file, and
controls properties of X applications that are run during your
session.  A full discussion of xrdb is beyond the scope of this
document, but you can do {\tt man xrdb} to learn more about it
on your own.  A few sample lines from a .Xresources follow:
\begin{verbatim}
XTerm*background:               black       ! Black background
XTerm*foreground:               green       ! with Green text
XTerm*scrollBar:                true        ! Use scrollbars
xclock.geometry:                100x100+0-0 ! Set location and size 
\end{verbatim}
You may notice that this is the first of the dotfiles we have mentioned
which is not simply a (t)csh script that gets run in a particular
order.
Also note that the capitalization of the program specification is very
important (and confusing), so look back to the manpage for reference.


\subsection{\til/.startup.X}  % 5.6
\label{StartupX}

This is the designated file to start X
programs from, because at this point the window manager has been
started, Xresources loaded, and all environment variables set.  An
important point to remember is to put a `\&' after commands which don't
return immediately, so
that the command is started in the background, while the main process
continues on.  There are a wide variety of popular programs to start
in the background so only a couple will be listed, namely:

\begin{verbatim}
xloadimage -fullscreen -onroot Graphics/background.gif > /dev/null &
xterm -name Main -geometry +300+300 &
xscreensaver -l &
\end{verbatim}
% xscreensaver isn't really the recommended one... hm.
Which respectively set the background of your screen to be the
specified image, create an xterm with a specific name and location,
and start the SIPB xscreensaver, so that you can click on its icon to lock your
machine.

\subsection{\til/.logout}
\label{Logout}
This file is sourced by session\_gate when you log off.  Typically
there isn't much to be done in this file, but there are some jobs it's
good at.  For example, if you want to record how long you're logged on
every day, you can append the date into a file for later use.  Or you
can leave friends a more accurate version of lastlog, by appending the
date into a file into your Public directory.  If you've changed the
default location of your kerberos tickets, your \til/.logout is a good
place to insure that they are destroyed when you log off (kdestroy will
get run by /etc/athena/login/Xsession, so unless you have extra sets of
ticket files, you don't need to worry about this).

\section{TTY logins}  % 6
\label{TTY}
Until this point, this document has covered what happens when you log in
via X.  However, during TTY logins, a slightly different sequence of
files are sourced.  A TTY login occurs when you telnet, ssh or rlogin to a
machine, or if you choose the {\it Terminal-style session} option from
xlogin.

Whichever program handles your login will startup a copy of your
default shell, with the {\tt -l} option, signifying that it should be
a login shell\footnote{The login shell on a TTY session is equivalent
to the session gate under X, so that if you exit it the login shell, you will be
logged out.}.
 This shell will then run \til/.cshrc\footnote{Unless you aren't
a (t)csh user, of course.} (Section~\ref{Cshrc},
which will follow the same path as in a X login.  When
this is done, the shell will then source \til/.login (see below).
When the login shell finally exits, it will source \til/.logout
(Section \ref{Logout}).

\subsection{\til/.login}

This file by default simply sources /usr/athena/lib/init/login then
returns.  This is a good place to make modifications of your own
for TTY logins, but the same warnings apply as to {\til/.cshrc}; if
you modify this file, you have to make sure to keep it up to date with
Athena releases.

\subsection{/usr/athena/lib/init/login}

This script first checks for the existence of a \til/.hushlogin, then
it sets terminal characteristics appropriate to the particular machine type.
% \begin{verbatim}
% /bin/stty dec
% \end{verbatim}
Then, if the skip\_tty\_startup shell variable isn't set, login will
run the following sequence of commands
\begin{verbatim}
zwgc                            # Start Zephyr client
from -t -n                      # Check for mail
(olc who &) >& /dev/null        # Ping the OLC server
\end{verbatim}

Finally, unless the skip\_lert shell variable is set, login runs
{\tt lert -q}, which shows any Athena Accounts messages to you
(such as account deactivation warnings).

\subsection{\til/.startup.tty}

This is the equivalent of {\til/.startup.X}, but is only run when you
log in on a TTY session.  Traditionally, less is done in this file than in
\til/.startup.X, due to the single screen nature of a TTY login.

\section{Customizing your login}  % 7

Up to this point, all discussion has assumed no modifications to the
default dotfiles (aside from the possible addition of some files).

\subsection{Things to remember}

Remember, messing with your dotfiles can be hazardous to your ability
to log in :-) However, at any point you can still log in by choosing
the {\it Ignore Customizations} option at the xlogin.  This will
ignore any changes that you have made to your dotfiles, and log you in
safely.  And if things go really bad, you can delete the copies of
your dotfiles that you have been modifying and get new copies of
the defaults from /usr/prototype\_user (for .cshrc, .login, and
.mh\_profile), /usr/athena/lib/X11 (for the system wide .mwmrc, which will
be called system.mwmrc), or
/usr/athena/lib/zephyr (for zwgc.desc).  Finally, you can and
should test all dotfiles you are modifying by either running or
sourcing them while still logged in.

\subsection{Normal Customizations}  % 7.2

The best way to customize your account is to create and modify the 
\til/.cshrc.mine, \til/.environment, \til/.Xresources, and \til/.startup.X files
mentioned above.  

A modification which makes a big difference to the look of your login session
is the Xresources that many of the programs you run use.  If you have
the option of modifying an attribute such as background color on the
command line, every time you start the program, or setting an Xresource,
it's probably easiest to set the Xresource.  If you decided not to run
dash because it has an ugly color, first, try experimenting with different
color choices.  For example, you might put the following in your
\til/.Xresources:
\begin{verbatim}
Dash*background: grey20
Dash*foreground: yellow
\end{verbatim}
Once you start looking around, you will be surprised at what modifications
many X applications will allow.

From an aesthetic stand point, your choice and configuration of window manager
is also important (Section \ref{WindowManager}).

Another area of common modification includes desktop toys.  Some common ones
are xclock, xload, xcalc, xzul (in the outland locker), and xzewd
(also in the outland locker).  Any other X applications that you find
yourself using every time you login are also candidates for being
started out of your \til/.startup.X.
Setting a geometry resource will save you having to place
each application that you start up, which is especially important
if you start up them up in your \til/.startup.X.

\subsection{Quickstation Customizations}  % 7.3

Unless it is carefully done, a heavily customized login
is often a slow login.  For this reason, some people prefer to make
a different set of customizations get executed when they login to a
quickstation.  To make this possible, the environment variable
{\tt ATHENA\_QUICK} is automatically set in the default dotfiles.
Here's an example of how you might use this in your \til/.startup.X.
\begin{verbatim}
if(! $?ATHENA_QUICK) then
  add infoagents sipb
  xzewd &
  netscape &
endif
\end{verbatim}
%else
%  emacs -f mh-rmail &

\subsection{SGI Differences}

When you login on an SGI, the default sequence of dotfiles differs slightly
from that on other platforms.  If you want your login on SGIs to look just
like your login on other platforms, you can put {\tt set skip\_sgi} in
your \til/.environment.  However, there are reasons why you might want to
keep the customizations separate. %, which we will now discuss.

The main differences in the login sequence are that your
\til/.startup.sgi (if it exists) will get sourced instead of your
\til/.startup.X, and that the windowmanager 4dwm will get run instead
of mwm (or whatever windowmanager you have set in your
\til/.environment).

If you want to customize your SGI login separately from your normal
login, it's likely that you'll have to do very little work.  The window
manager 4dwm will create a directory\footnote{The files will actually
be of the form \til/.desktop-{\it hostname}, but they will be symlinks
to \til/.desktop\_indy or \til/.desktop\_O2.} \til/.desktop\_indy or
\til/.desktop\_O2, containing its configuration files, and saving
information about what programs you were running, and where they were
on the desktop.  The next time it starts up, it will launch all the
programs that were running when it was last shut down.  This means that
you don't want to start up programs in your \til/.startup.sgi, since
unless you remember to exit each of them before you logout, you will
end up getting several copies started, each time you login.

\subsection{Using Other Shells}
\label{OtherShells}
If you are used to a shell other than tcsh, on other systems, it may
make sense to configure your Athena account to use that shell also.
In particular, with the 8.3 Athena release, bash will also be supported,
and all new accounts will start with a set of
dotfiles for bash, as well as those for tcsh.  If you currently use tcsh,
and wish to switch to bash, you will need to copy in a .bashrc and .bash\_login
from /usr/prototype\_user, then run chsh to change the information
about your default shell in moira.

If you are running bash as your shell, your \til/.cshrc will never get
sourced, but your \til/.bashrc will, and your \til/.bash\_environment
will get sourced instead of your \til/.environment.  Your
\til/.startup.X or \til/.startup.tty will get sourced, as appropriate.
Since the syntax of bash differs from that of tcsh, if you already have
customizations, you might need to rewrite them.  For information on
bash, {\tt man bash} or read the node in the info database\footnote{
To do this, you can run {\tt info -f bash}, or from within emacs, you
can do {\tt C-h i m bash <RET>}.}.

\section{Conclusion}

We hope that this document has taught you a bit about dotfiles, and given
you some ideas for customizing your own.

\newpage % Appendix should not be on the same page as other text
\appendix

\section{Other Dotfiles}

The files listed above are the ones used during every login.  There is
another set of dotfiles, which exist in almost all user's home
directories, but which pertain more to the execution of various
programs than to the actual login process.  It is typical for
many programs to use such dotfiles to store user configuration between
sessions, and some users have several hundred such dotfiles.
Less time will be spent on these than those above, but a
few are worth mentioning due to their ubiquitous nature.

\subsection{\til/.emacs}

Emacs reads and loads this file every time it is started.  This file
is composed of emacs lisp commands, the native language of gnu emacs.  The
capabilities of emacs are well beyond the scope of this document, and
a .emacs may invoke all of these capabilities.  Several examples of
.emacs files may be found in the dotfiles locker under the Emacs
directory.  Help with emacs may be found by doing C-h i inside an
emacs window, and selecting the emacs menu option.

\subsection{\til/.meetings, \til/.newsrc}

These files are used by discuss and newsreader programs to store 
the list of meetings or groups which the user wishes to read.
The SIPB documents Using Discuss and One Page NetNews\footnote{You can get
these from /mit/sipb/doc, {\tt http://www.mit.edu/sipb/docs.html},
or by asking at the SIPB office.} will get
you started with discuss and netnews.
%% untrue.  this section does need more work, though.
% You should not
% modify either of these by hand, as they are designed to be modified by
% their respective programs, not humans.

\subsection{\til/.mh\_profile}  % A.2

This is the default configuration file for MH, which is the set of
programs (including inc and comp) used for handling mail.  For more
information on this file, read its manual pages with the commands
{\tt man mh-profile} and {\tt man mh}.

\subsection{\til/.mwmrc, \til/.twmrc, etc.}
\label{WindowManager}

These are configuration files for Motif Window Manager (mwm), Tab
Window Manager (twm) respectively, although several other window
managers, such as ctwm and vtwm.gamma will use \til/.twmrc.  Each
window manager has its own configuration file which determines how
windows on your screen are manipulated, how the title bars and borders
look, what menus are available, etc.  To use a window manager which
isn't the default, you should set the environment variable in your
\til/.environment.  For example, to use the ctwm window manager, you would need to do:
\begin{verbatim}
add windowmanagers
setenv WINDOW_MANAGER ctwm
\end{verbatim}
Some examples of customized window manager dotfiles can be found in the
dotfiles locker\footnote{The dotfiles locker
is a repository for various dotfiles so that people
can learn by example.  Caution is advised, if you intend to use them in
their entierty, since they are not guaranteed to be up to date.}.
More information can also be found by reading the manual
page of the window manager in question.

\subsection{\til/.plan}

On many systems, it's traditional to leave your current plans,
information about how to get in touch with you, pgp public key, or
anything that you want to tell lots of people in your \til/.plan.  Other
people can then read your \til/.plan by fingering you on a finger server
which will display your \til/.plan.  Because of how afs file permissions
work, unless you have made the top level of your home directory world
readable, you will need to put your \til/.plan in your Public directory,
then symlink it to the top level of your home directory.  To see your
\til/.plan, or someone else's, {\tt finger username@monk.mit.edu}.  The
Electric Monk is a public finger service which serves up finger
information for the MIT community.  There is also a discuss meeting
which archives an assortment of \til/.plan files\footnote{
Point your discuss reader at {\tt bloom-picayune.mit.edu:/usr/spool/discuss/ca}.},
so be aware that your
\til/.plan could get archived there.

\subsection{\til/.zwgc.desc, \til/.zephyr.subs, \til/.zephyr.vars}

These are configuration files for zephyr programs.  \til/.zwgc.desc is
used by zwgc to describes how windowgrams will appear on your screen,
while  \til/.zephyr.subs determines what instances and classes you are
subscribed to.  \til/.zephyr.vars is used to set zephyr signatures,
visibility, and other zephyr variables.  All of these files are
covered in Inessential Zephyr\footnote{Inessential Zephyr is published
by The SIPB.  You can find it at /mit/sipb/doc/izephyr.dvi, or you can
pick up a copy at the SIPB office.}.


\end{document}
