diff --git a/bin/foamEtcFile b/bin/foamEtcFile
new file mode 100755
index 000000000..5bae566b5
--- /dev/null
+++ b/bin/foamEtcFile
@@ -0,0 +1,277 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration |
+# \\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd.
+# \\/ M anipulation |
+#-------------------------------------------------------------------------------
+# License
+# This file is part of OpenFOAM.
+#
+# OpenFOAM is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with OpenFOAM. If not, see .
+#
+# Script
+# foamEtcFile
+#
+# Description
+# Locate user/group/shipped file with semantics similar to the
+# ~OpenFOAM/fileName expansion.
+#
+# The -mode option can be used to allow chaining from
+# personal settings to site-wide settings.
+#
+# For example, within the user ~/.OpenFOAM//prefs.sh:
+# @verbatim
+# foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile -m go prefs.sh` \
+# && _foamSource $foamPrefs
+# @endverbatim
+#
+#-------------------------------------------------------------------------------
+usage() {
+ [ "$quietOpt" = true ] && exit 1
+
+ exec 1>&2
+ while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+ cat< any combination of u(user), g(group), o(other)
+ -prefix specify an alternative installation prefix
+ -quiet suppress all normal output
+ -version specify an alternative OpenFOAM version
+ in the form Maj.Min.Rev (eg, 1.7.0)
+ -help print the usage
+
+ Locate user/group/shipped file with semantics similar to the
+ ~OpenFOAM/fileName expansion.
+
+ The options can also be specified as a single character
+ (eg, '-q' instead of '-quiet'), but must not be grouped.
+
+ Exit status
+ 0 when the file is found. Print resolved path to stdout.
+ 1 for miscellaneous errors.
+ 2 when the file is not found.
+
+USAGE
+ exit 1
+}
+
+#
+# This script must exist in /OpenFOAM-/bin/
+# or /openfoam/bin/ (for the debian version)
+#
+#-------------------------------------------------------------------------------
+
+# the bindir:
+binDir="${0%/*}"
+
+# the project dir:
+projectDir="${binDir%/bin}"
+
+# the prefix dir (same as foamInstall):
+prefixDir="${projectDir%/*}"
+
+# the name used for the project directory
+projectDirName="${projectDir##*/}"
+
+# version number used for debian packaging
+unset versionNum
+
+#
+# handle standard and debian naming convention
+#
+case "$projectDirName" in
+OpenFOAM-*) # standard naming convention OpenFOAM-
+ version="${projectDirName##OpenFOAM-}"
+ ;;
+
+openfoam[0-9]*) # debian naming convention 'openfoam'
+ versionNum="${projectDirName##openfoam}"
+ case "$versionNum" in
+ ??) # convert 2 digit version number to decimal delineated
+ version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)@\1.\2@')
+ ;;
+ ???) # convert 3 digit version number to decimal delineated
+ version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)@\1.\2.\3@')
+ ;;
+ ????) # convert 4 digit version number to decimal delineated
+ version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)\(.\)@\1.\2.\3.\4@')
+ ;;
+ *) # failback - use current environment setting
+ version="$WM_PROJECT_VERSION"
+ ;;
+ esac
+ ;;
+
+*)
+ echo "Error : unknown/unsupported naming convention"
+ exit 1
+ ;;
+esac
+
+
+# default mode is 'ugo'
+mode=ugo
+unset listOpt quietOpt
+
+# parse options
+while [ "$#" -gt 0 ]
+do
+ case "$1" in
+ -h | -help)
+ usage
+ ;;
+ -l | -list)
+ listOpt=true
+ ;;
+ -m | -mode)
+ [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
+ mode="$2"
+
+ # sanity check:
+ case "$mode" in
+ *u* | *g* | *o* )
+ ;;
+ *)
+ usage "'$1' option with invalid mode '$mode'"
+ ;;
+ esac
+ shift
+ ;;
+ -p | -prefix)
+ [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
+ prefixDir="$2"
+ shift
+ ;;
+ -q | -quiet)
+ quietOpt=true
+ ;;
+ -v | -version)
+ [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
+ version="$2"
+ # convert x.y.z -> xyz version (if installation looked like debian)
+ if [ -n "$versionNum" ]
+ then
+ versionNum=$(echo "$version" | sed -e 's@\.@@g')
+ fi
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ -*)
+ usage "unknown option: '$*'"
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+done
+
+
+# debugging:
+# echo "Installed locations:"
+# for i in projectDir prefixDir projectDirName version versionNum
+# do
+# eval echo "$i=\$$i"
+# done
+
+
+# Save the essential bits of information
+# silently remove leading ~OpenFOAM/ (used in Foam::findEtcFile)
+nArgs=$#
+fileName="${1#~OpenFOAM/}"
+
+# Define the various places to be searched:
+unset dirList
+case "$mode" in
+*u*) # user
+ dirList="$dirList $HOME/.${WM_PROJECT:-OpenFOAM}/$version"
+ dirList="$dirList $HOME/.${WM_PROJECT:-OpenFOAM}"
+ ;;
+esac
+
+case "$mode" in
+*g*) # group
+ dirList="$dirList $prefixDir/site/$version"
+ dirList="$dirList $prefixDir/site"
+ ;;
+esac
+
+case "$mode" in
+*o*) # other (shipped)
+ if [ -n "$versionNum" ]
+ then
+ # debian packaging
+ dirList="$dirList $prefixDir/openfoam$versionNum/etc"
+ else
+ # standard packaging
+ dirList="$dirList $prefixDir/${WM_PROJECT:-OpenFOAM}-$version/etc"
+ fi
+ ;;
+esac
+set -- $dirList
+
+
+#
+# The main routine
+#
+
+if [ "$listOpt" = true ]
+then
+
+ # list directories, or potential file locations
+ [ "$nArgs" -le 1 ] || usage
+
+ # a silly combination, but -quiet has precedence
+ [ "$quietOpt" = true ] && exit 0
+
+ for dir
+ do
+ if [ "$nArgs" -eq 1 ]
+ then
+ echo "$dir/$fileName"
+ else
+ echo "$dir"
+ fi
+ done
+ exit 0
+
+else
+
+ [ "$nArgs" -eq 1 ] || usage
+
+ for dir
+ do
+ if [ -f "$dir/$fileName" ]
+ then
+ [ "$quietOpt" = true ] || echo "$dir/$fileName"
+ exit 0
+ fi
+ done
+
+fi
+
+
+# general error, eg file not found
+exit 2
+
+#------------------------------------------------------------------------------
diff --git a/etc/bashrc b/etc/bashrc
index 6852f3f11..f3f7dd017 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -78,6 +78,37 @@ export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
+# Source files, possibly with some verbosity
+_foamSource()
+{
+ while [ $# -ge 1 ]
+ do
+ [ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1"
+ . $1
+ shift
+ done
+}
+
+# Add in preset user or site preferences:
+foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh` && _foamSource $foamPrefs
+unset foamPrefs
+
+# Evaluate command-line parameters
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ *=)
+ # name= -> unset name
+ eval "unset ${1%=}"
+ ;;
+ *=*)
+ # name=value -> export name=value
+ eval "export $1"
+ ;;
+ esac
+ shift
+done
+
# Operating System/Platform
# ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -278,16 +309,6 @@ export PATH LD_LIBRARY_PATH MANPATH
# Source project setup files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
-_foamSource()
-{
- while [ $# -ge 1 ]
- do
- [ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1"
- . $1
- shift
- done
-}
-
_foamSource $WM_PROJECT_DIR/etc/settings.sh
_foamSource $WM_PROJECT_DIR/etc/aliases.sh
diff --git a/etc/cshrc b/etc/cshrc
index 40c67dfe1..78cbb09f3 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -72,6 +72,31 @@ setenv WM_PROJECT_USER_DIR $HOME/$WM_PROJECT/$LOGNAME-$WM_PROJECT_VERSION
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
+# Source files, possibly with some verbosity
+alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Sourcing: \!*"; source
+
+# Add in preset user or site preferences:
+set foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile prefs.csh`
+if ( $status == 0 ) then
+ _foamSource $foamPrefs
+endif
+unset foamPrefs
+
+# Evaluate command-line parameters
+while ( $#argv > 0 )
+ switch ($argv[1])
+ case *=:
+ # name= -> unsetenv name
+ eval "unsetenv $argv[1]:s/=//"
+ breaksw
+ case *=*:
+ # name=value -> setenv name value
+ eval "setenv $argv[1]:s/=/ /"
+ breaksw
+ endsw
+ shift
+end
+
# Operating System/Platform
# ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -228,8 +253,6 @@ setenv MANPATH `$cleanProg "$MANPATH" "$foamOldDirs"`
# Source project setup files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
-alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Executing: \!*"; source \!*'
-
_foamSource $WM_PROJECT_DIR/etc/settings.csh
_foamSource $WM_PROJECT_DIR/etc/aliases.csh
diff --git a/etc/prefs.csh-EXAMPLE b/etc/prefs.csh-EXAMPLE
new file mode 100644
index 000000000..6222054e2
--- /dev/null
+++ b/etc/prefs.csh-EXAMPLE
@@ -0,0 +1,52 @@
+#----------------------------------*-sh-*--------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration |
+# \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
+# \\/ M anipulation |
+#------------------------------------------------------------------------------
+# License
+# This file is part of OpenFOAM.
+#
+# OpenFOAM is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with OpenFOAM. If not, see .
+#
+# File
+# etc/prefs.csh
+#
+# Description
+# Preset variables for the OpenFOAM configuration - C-Shell shell syntax.
+#
+# The prefs.csh file will be sourced by the OpenFOAM etc/cshrc when it is
+# found by foamEtcFile.
+#
+# See Also
+# 'foamEtcFile -help' or 'foamEtcFile -list' for information about the
+# paths searched
+#
+#------------------------------------------------------------------------------
+
+## Specify system compiler
+## ~~~~~~~~~~~~~~~~~~~~~~~
+#set compilerInstall=system
+
+## Specify system openmpi
+## ~~~~~~~~~~~~~~~~~~~~~~
+#setenv WM_MPLIB SYSTEMOPENMPI
+
+# Specify ParaView version
+# ~~~~~~~~~~~~~~~~~~~~~~~~
+setenv ParaView_VERSION git # eg, cvs/git version
+setenv ParaView_MAJOR 3.7
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/etc/prefs.sh-EXAMPLE b/etc/prefs.sh-EXAMPLE
new file mode 100644
index 000000000..598c5710c
--- /dev/null
+++ b/etc/prefs.sh-EXAMPLE
@@ -0,0 +1,52 @@
+#----------------------------------*-sh-*--------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration |
+# \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
+# \\/ M anipulation |
+#------------------------------------------------------------------------------
+# License
+# This file is part of OpenFOAM.
+#
+# OpenFOAM is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with OpenFOAM. If not, see .
+#
+# File
+# etc/prefs.sh
+#
+# Description
+# Preset variables for the OpenFOAM configuration - POSIX shell syntax.
+#
+# The prefs.sh file will be sourced by the OpenFOAM etc/bashrc when it is
+# found by foamEtcFile.
+#
+# See Also
+# 'foamEtcFile -help' or 'foamEtcFile -list' for information about the
+# paths searched
+#
+#------------------------------------------------------------------------------
+
+# Specify system compiler
+# ~~~~~~~~~~~~~~~~~~~~~~~
+compilerInstall=system
+
+# Specify system openmpi
+# ~~~~~~~~~~~~~~~~~~~~~~
+export WM_MPLIB=SYSTEMOPENMPI
+
+# Specify ParaView version
+# ~~~~~~~~~~~~~~~~~~~~~~~~
+export ParaView_VERSION=git # eg, cvs/git version
+export ParaView_MAJOR=3.7
+
+# ----------------------------------------------------------------- end-of-file