- It is incorrect to prefix the assignment with an 'export' since this automatically marks the overall command as successful and circumvents the fallback. There is no simple way to have proper behaviour when sourced with a local directory path, but at least it now uses the fallback. It is still easy to wreak the mechanism with valid but confusing input. For example, ". /path/to/openfoam/etc/././bashrc" The only real certainty is that "${BASH_SOURCE%/*}" should point to the 'etc/' directory. In which case, cd ${BASH_SOURCE%/*} # <- now in the etc/ directory pwd=$(pwd -P) # <- fully-qualified path to etc/ pwd=${pwd%/*/*} # <- up two parent levels - This works with ". ./bashrc", but fails with ". bashrc" (probably not so common). - Con: The construct requires an additional sub-shell.
212 lines
6.7 KiB
Bash
212 lines
6.7 KiB
Bash
#----------------------------------*-sh-*--------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
|
# \\/ 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 <http://www.gnu.org/licenses/>.
|
|
#
|
|
# File
|
|
# etc/bashrc
|
|
#
|
|
# Description
|
|
# Startup file for OpenFOAM
|
|
# Sourced from ~/.profile or ~/.bashrc
|
|
# Should be usable by any POSIX-compliant shell (eg, ksh)
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
export WM_PROJECT=OpenFOAM
|
|
export WM_PROJECT_VERSION=plus
|
|
|
|
################################################################################
|
|
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
|
|
#
|
|
# FOAM_INST_DIR is the location of the OpenFOAM installation which defaults to
|
|
# the directory containing this file if sourced by a bash shell.
|
|
#
|
|
# Please set to the appropriate path if the default is not correct.
|
|
#
|
|
[ $BASH_SOURCE ] && FOAM_INST_DIR=$(\cd ${BASH_SOURCE%/*/*/*} && \pwd -P) || \
|
|
FOAM_INST_DIR=$HOME/$WM_PROJECT
|
|
# FOAM_INST_DIR=~$WM_PROJECT
|
|
# FOAM_INST_DIR=/opt/$WM_PROJECT
|
|
# FOAM_INST_DIR=/usr/local/$WM_PROJECT
|
|
#
|
|
# END OF (NORMAL) USER EDITABLE PART
|
|
################################################################################
|
|
export FOAM_INST_DIR
|
|
|
|
# The default environment variables below can be overridden in a prefs.sh file
|
|
# located in ~/.OpenFOAM/$WM_PROJECT_VERSION, ~/.OpenFOAM,
|
|
# $FOAM_INST_DIR/site/$WM_PROJECT_VERSION or $FOAM_INST_DIR/site
|
|
|
|
#- Compiler location:
|
|
# WM_COMPILER_TYPE= system | ThirdParty
|
|
export WM_COMPILER_TYPE=system
|
|
|
|
#- Compiler:
|
|
# WM_COMPILER = Gcc | Gcc4[5-9] | Gcc5[1-4] | Gcc61 | Clang | Icc
|
|
export WM_COMPILER=Gcc
|
|
unset WM_COMPILER_ARCH WM_COMPILER_LIB_ARCH
|
|
|
|
#- Memory addressing:
|
|
# On a 64bit OS this can be 32bit or 64bit
|
|
# On a 32bit OS addressing is 32bit and this option is not used
|
|
# WM_ARCH_OPTION = 32 | 64
|
|
export WM_ARCH_OPTION=64
|
|
|
|
#- Precision:
|
|
# WM_PRECISION_OPTION = DP | SP
|
|
export WM_PRECISION_OPTION=DP
|
|
|
|
#- Label size:
|
|
# WM_LABEL_SIZE = 32 | 64
|
|
export WM_LABEL_SIZE=32
|
|
|
|
#- Optimised, debug, profiling:
|
|
# WM_COMPILE_OPTION = Opt | Debug | Prof
|
|
export WM_COMPILE_OPTION=Opt
|
|
|
|
#- MPI implementation:
|
|
# WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
|
|
# | MPI | QSMPI | SGIMPI
|
|
export WM_MPLIB=OPENMPI
|
|
|
|
#- Operating System:
|
|
# WM_OSTYPE = POSIX | ???
|
|
export WM_OSTYPE=POSIX
|
|
|
|
#- Floating-point signal handling:
|
|
# set or unset
|
|
export FOAM_SIGFPE=
|
|
|
|
#- memory initialisation:
|
|
# set or unset
|
|
#export FOAM_SETNAN=
|
|
|
|
|
|
################################################################################
|
|
|
|
# The old dirs to be cleaned from the environment variables
|
|
foamOldDirs="$WM_PROJECT_DIR $WM_THIRD_PARTY_DIR \
|
|
$HOME/$WM_PROJECT/$USER $FOAM_USER_APPBIN $FOAM_USER_LIBBIN \
|
|
$WM_PROJECT_SITE $FOAM_SITE_APPBIN $FOAM_SITE_LIBBIN"
|
|
|
|
# Location of installation
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
|
|
export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
|
|
|
|
# Location of third-party software
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
|
|
|
|
# Location of site-specific templates etc
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
# unset is equivalent to $WM_PROJECT_INST_DIR/site
|
|
if [ -d "$WM_PROJECT_SITE" ]
|
|
then
|
|
export WM_PROJECT_SITE
|
|
else
|
|
unset WM_PROJECT_SITE
|
|
fi
|
|
|
|
# Location of user files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
|
|
|
|
# Source initialization functions
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
. $WM_PROJECT_DIR/etc/config.sh/functions
|
|
|
|
# Add in preset user or site preferences:
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
|
|
|
|
# Evaluate command-line parameters and record settings for later
|
|
# these can be used to set/unset values, or specify alternative pref files
|
|
export FOAM_SETTINGS="$@"
|
|
_foamEval $@
|
|
|
|
# Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
foamClean=$WM_PROJECT_DIR/bin/foamCleanPath
|
|
|
|
#- Clean PATH
|
|
cleaned=`$foamClean "$PATH" "$foamOldDirs"` && PATH="$cleaned"
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
cleaned=`$foamClean "$LD_LIBRARY_PATH" "$foamOldDirs"` \
|
|
&& LD_LIBRARY_PATH="$cleaned"
|
|
|
|
#- Clean MANPATH
|
|
cleaned=`$foamClean "$MANPATH" "$foamOldDirs"` && MANPATH="$cleaned"
|
|
|
|
export PATH LD_LIBRARY_PATH MANPATH
|
|
|
|
|
|
# Source project setup files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamSource $WM_PROJECT_DIR/etc/config.sh/settings
|
|
_foamSource $WM_PROJECT_DIR/etc/config.sh/aliases
|
|
|
|
|
|
# Source user setup files for optional packages
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools`
|
|
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/scotch`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/FFTW`
|
|
|
|
|
|
# Clean environment paths again. Only remove duplicates
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#- Clean PATH
|
|
cleaned=`$foamClean "$PATH"` && PATH="$cleaned"
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
cleaned=`$foamClean "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH="$cleaned"
|
|
|
|
#- Clean MANPATH (trailing ':' to find system pages)
|
|
cleaned=`$foamClean "$MANPATH"`: && MANPATH="$cleaned"
|
|
|
|
export PATH LD_LIBRARY_PATH MANPATH
|
|
|
|
#- Clean LD_PRELOAD
|
|
if [ -n "$LD_PRELOAD" ]
|
|
then
|
|
cleaned=`$foamClean "$LD_PRELOAD"` && LD_PRELOAD="$cleaned"
|
|
export LD_PRELOAD
|
|
fi
|
|
|
|
|
|
# Cleanup environment:
|
|
# ~~~~~~~~~~~~~~~~~~~~
|
|
unset cleaned foamClean foamOldDirs
|
|
|
|
|
|
# Unload initialization functions:
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
. $WM_PROJECT_DIR/etc/config.sh/functions
|
|
|
|
#------------------------------------------------------------------------------
|