NERSCPowering Scientific Discovery Since 1974

Shells and Startup Files

PDSF Defined Environment

When new users are added to the PDSF machines, the shell is set according to a request. One can choose between tcsh (an enhanced version of the C shell), ksh or bash. A default user home directory is created under the name,

    /u/login-name

PDSF has adopted the modules package as the method of specifying the user environment to access different versions of compilers, libraries, man pages, etc. For this reason it is very important that users avoid redefining paths and environment variables as is the practice with some other UNIX machines. Please see the introductory page on modules.

C Shell Family Login Environment

With the C shells (csh and tcsh), when a login shell is opened commands are read first from .cshrc in the users home directory. On pdsf the default version of .cshrc does the following:

     sources /u/startup/pdsf.cshrc
for a new window augments PATH and MANPATH
for a new window loads several modules
for an interactive shell sets aliases and local variables
including the prompt

The file /u/startup/pdsf.cshrc does several things:

     initializes the modules package
for a new window sets PATH, MANPATH and MODULEPATH
sets umask, the default file protection
this script may also run other group related setup
scripts
also grid related setup is done here

After execution of .cshrc the .login file in the users home directory is then executed. On pdsf the default version of .login does the following:

     sources /u/startup/pdsf.login
set environment variables such as a default printer

The file /u/startup/pdsf.login does several things:

     set some common terminal characteristics
print the message of the day
notify the users if they have mail
notify the users if there is new news
make a "best try" to set the DISPLAY

Users are welcome to customize their .cshrc and .login files. The files pdsf.cshrc and pdsf.login are not designed to require individual customization.

Bourne Shell Family Login Environment

With the Bourne shells (sh and ksh), when a login shell is opened commands are read first from .profile in the users home directory. On pdsf the default version of .profile does the following:

     sources /u/startup/pdsf.profile
sets ENV to be ${HOME}/.kshrc and exports it
augments PATH and MANPATH
loads several modules
sets some variables including the prompt

The file /u/startup/pdsf.profile does several things:

     initializes the modules package
sets PATH, MANPATH and MODULEPATH
sets umask, the default file protection
set some common terminal characteristics
print the message of the day
notify the users if they have mail
notify the users if there is new news
make a "best try" to set the DISPLAY
also runs any group related setup

After execution of .profile for ksh and POSIX shells (but not for the Bourne shell) the file specified by the ENV variable (usually .kshrc) is executed. On pdsf the default version of .kshrc does the following:

     sources /u/startup/user.kshrc if it exists
set a few flags including the type of command line editing
defines aliases

The file /u/startup/user.kshrc does not exist at present. It is reserved for future expansion.

Users are welcome to customize their .profile and .kshrc files. The files pdsf.profile is not designed to require individual customization.

User Modifications to Environment

On some other UNIX systems users could freely modify their startup files to accomodate their particular preferences of PATH, MANPATH, LIBPATH, etc. However, with the use of modules much of the environment is now controlled by the system. In order to avoid confusion between system and user modifications to the environment variables, users should alway make changes by way of augmentation rather than redefinition of the PATH, etc.

For example, in the ~/.cshrc file, add your directories to the path as follows:

   set path = ($path /project1/bin /project2/bin)

For users of a POSIX shell, the way to modify a path in the ~/.profile file is:

   PATH=$PATH:/project1/bin:/project2/bin

Troubleshooting and Cautions

Please do not copy startup files from other machines

Users should never copy startup files from other machines. This will cause much confusion. Users may add their favorite customizations (alias, etc.) to the startup files and then check for any conflicts with the default environment.

If your startup files get overly complicated and confusing and you want to start over you can copy versions that are given to new users from

/u/startup
create .cshrc from user.cshrc
create .kshrc from user.kshrc
create .login from user.login
create .profile from user.profile

Caution when customizing the environment

Users are encouraged to become familiar with the default, system-defined environment before making customizations.

Users should be sure that their customizations do not conflict with system defined environment variables and aliases. If you find that something is "missing" in your envinronment, first remove your customizations and see if they are causing a conflict with the system-defined environment.

Caution when modifying path

Users should never redefine their path; rather additional directories should be prepended or appended to the existing path. Most path modifications should be done by modules rather than directly by the user.

Commands such as:

   set path = (dir1 dir2 ...)
setenv LD_LIBRARY_PATH dir1:dir2 ...

are an invitation to disaster.