etc/bashrc tweak to cleanse env vars, even from a different WM_PROJECT_INST_DIR

- Problem: changing between OpenFOAM versions with different
  WM_PROJECT_INST_DIR paths would leave the old paths in the env vars.

- TODO: etc/cshrc is rougned out, but needs work on the corresponding
  if-statement
This commit is contained in:
Mark Olesen
2009-01-08 22:34:54 +01:00
parent e255f36114
commit 7f8e6e6077
2 changed files with 58 additions and 39 deletions

View File

@ -36,8 +36,9 @@ export WM_PROJECT=OpenFOAM
# export WM_PROJECT_VERSION=1.5.x # export WM_PROJECT_VERSION=1.5.x
: ${WM_PROJECT_VERSION:=dev}; export WM_PROJECT_VERSION : ${WM_PROJECT_VERSION:=dev}; export WM_PROJECT_VERSION
################################################################################
#!!User: # USER EDITABLE PART
#
# either set $FOAM_INST_DIR before sourcing this file or set # either set $FOAM_INST_DIR before sourcing this file or set
# $foamInstall below to where OpenFOAM is installed # $foamInstall below to where OpenFOAM is installed
# #
@ -47,9 +48,22 @@ foamInstall=$HOME/$WM_PROJECT
# foamInstall=~$WM_PROJECT # foamInstall=~$WM_PROJECT
# foamInstall=/usr/local/$WM_PROJECT # foamInstall=/usr/local/$WM_PROJECT
# foamInstall=/opt/$WM_PROJECT # foamInstall=/opt/$WM_PROJECT
#
# END OF (NORMAL) USER EDITABLE PART
################################################################################
# note the location for later use (eg, in job scripts)
: ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR : ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR
# The old dirs to be cleaned from the various environment variables
# - remove anything under top-level directory.
# NB: the WM_PROJECT_INST_DIR might not be identical between versions
foamOldDirs="$FOAM_INST_DIR $HOME/$WM_PROJECT/$USER"
if [ "$WM_PROJECT_INST_DIR" != "$FOAM_INST_DIR" ]
then
foamOldDirs="$WM_PROJECT_INST_DIR $foamOldPaths"
fi
# Location of site/user files # Location of site/user files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -169,21 +183,18 @@ USAGE
esac esac
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH) # Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cleanProg=$WM_PROJECT_DIR/bin/foamCleanPath cleanProg=$WM_PROJECT_DIR/bin/foamCleanPath
# Remove anything under top-level foam directory #- Clean PATH
wildCards="$WM_PROJECT_INST_DIR $HOME/$WM_PROJECT/$USER" cleanEnv=`$cleanProg "$PATH" "$foamOldDirs"` && PATH="$cleanEnv"
#- Clean path/PATH
cleanPath=`$cleanProg "$PATH" "$wildCards"` && PATH="$cleanPath"
#- Clean LD_LIBRARY_PATH #- Clean LD_LIBRARY_PATH
cleanPath=`$cleanProg "$LD_LIBRARY_PATH" "$wildCards"` && LD_LIBRARY_PATH="$cleanPath" cleanEnv=`$cleanProg "$LD_LIBRARY_PATH" "$foamOldDirs"` && LD_LIBRARY_PATH="$cleanEnv"
#- Clean MANPATH #- Clean MANPATH
cleanPath=`$cleanProg "$MANPATH" "$wildCards"` && MANPATH="$cleanPath" cleanEnv=`$cleanProg "$MANPATH" "$foamCleanDirs"` && MANPATH="$cleanEnv"
export PATH LD_LIBRARY_PATH MANPATH export PATH LD_LIBRARY_PATH MANPATH
@ -212,29 +223,30 @@ _foamSource $WM_PROJECT_DIR/etc/apps/ensight/bashrc
_foamSource $WM_PROJECT_DIR/etc/apps/cint/bashrc _foamSource $WM_PROJECT_DIR/etc/apps/cint/bashrc
# Again clean environment (path, PATH, MANPATH, LD_LIBRARY_PATH) # Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#- Clean path/PATH. Only remove duplicates #- Clean PATH
cleanPath=`$cleanProg "$PATH"` && PATH="$cleanPath" cleanEnv=`$cleanProg "$PATH"` && PATH="$cleanEnv"
#- Clean LD_LIBRARY_PATH #- Clean LD_LIBRARY_PATH
cleanPath=`$cleanProg "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH="$cleanPath" cleanEnv=`$cleanProg "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH="$cleanEnv"
#- Clean MANPATH #- Clean MANPATH
cleanPath=`$cleanProg "$MANPATH"` && MANPATH="$cleanPath" cleanEnv=`$cleanProg "$MANPATH"` && MANPATH="$cleanEnv"
export PATH LD_LIBRARY_PATH MANPATH export PATH LD_LIBRARY_PATH MANPATH
#- Clean LD_PRELOAD #- Clean LD_PRELOAD
if [ "$LD_PRELOAD" != "" ]; then if [ "$LD_PRELOAD" != "" ]
cleanPath=`$cleanProg "$LD_PRELOAD"` && LD_PRELOAD="$cleanPath" then
cleanEnv=`$cleanProg "$LD_PRELOAD"` && LD_PRELOAD="$cleanEnv"
export LD_PRELOAD export LD_PRELOAD
fi fi
# cleanup environment: # cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~
unset cleanPath cleanProg foamInstall unset cleanEnv cleanProg foamInstall foamOldDirs
unset _foamSource unset _foamSource
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------

View File

@ -35,7 +35,9 @@ setenv WM_PROJECT OpenFOAM
# setenv WM_PROJECT_VERSION 1.5.x # setenv WM_PROJECT_VERSION 1.5.x
if ( ! $?WM_PROJECT_VERSION ) setenv WM_PROJECT_VERSION dev if ( ! $?WM_PROJECT_VERSION ) setenv WM_PROJECT_VERSION dev
#!!User: ################################################################################
# USER EDITABLE PART
#
# either setenv FOAM_INST_DIR before sourcing this file or set # either setenv FOAM_INST_DIR before sourcing this file or set
# foamInstall below to where OpenFOAM is installed # foamInstall below to where OpenFOAM is installed
# #
@ -45,9 +47,17 @@ set foamInstall = $HOME/$WM_PROJECT
# set foamInstall = ~$WM_PROJECT # set foamInstall = ~$WM_PROJECT
# set foamInstall = /usr/local/$WM_PROJECT # set foamInstall = /usr/local/$WM_PROJECT
# set foamInstall = /opt/$WM_PROJECT # set foamInstall = /opt/$WM_PROJECT
#
# END OF (NORMAL) USER EDITABLE PART
################################################################################
# note the location for later use (eg, in job scripts)
if ( ! $?FOAM_INST_DIR ) setenv FOAM_INST_DIR $foamInstall if ( ! $?FOAM_INST_DIR ) setenv FOAM_INST_DIR $foamInstall
# The old dirs to be cleaned from the various environment variables
# - remove anything under top-level directory.
# NB: the WM_PROJECT_INST_DIR might not be identical between versions
set foamOldDirs="$FOAM_INST_DIR $HOME/$WM_PROJECT/$LOGNAME"
# Location of site/user files # Location of site/user files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -165,8 +175,8 @@ default:
endsw endsw
# Clean standard environment variables (path, PATH, MANPATH, LD_LIBRARY_PATH) # Clean standard environment variables (path/PATH, LD_LIBRARY_PATH, MANPATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set cleanProg=$WM_PROJECT_DIR/bin/foamCleanPath set cleanProg=$WM_PROJECT_DIR/bin/foamCleanPath
if (! $?LD_LIBRARY_PATH ) then if (! $?LD_LIBRARY_PATH ) then
@ -176,21 +186,18 @@ if (! $?MANPATH) then
setenv MANPATH '' setenv MANPATH ''
endif endif
# Remove anything under top-level foam directory
set wildCards="$WM_PROJECT_INST_DIR $HOME/$WM_PROJECT/$LOGNAME"
#- Clean path/PATH #- Clean path/PATH
set colonPath=`echo "$path" | sed -e 's/ /:/g'` set colonPath=`echo "$path" | sed -e 's/ /:/g'`
set PATH=`$cleanProg "$colonPath" "$wildCards"` set cleanEnv=`$cleanProg "$colonPath" "$foamOldDirs"`
if ( $status == 0 ) then if ( $status == 0 ) then
set path=`echo "$PATH" | sed -e 's/:/ /g'` set path=`echo "$cleanEnv" | sed -e 's/:/ /g'`
endif endif
#- Clean LD_LIBRARY_PATH #- Clean LD_LIBRARY_PATH
setenv LD_LIBRARY_PATH `$cleanProg "$LD_LIBRARY_PATH" "$wildCards"` setenv LD_LIBRARY_PATH `$cleanProg "$LD_LIBRARY_PATH" "$foamOldDirs"`
#- Clean MANPATH #- Clean MANPATH
setenv MANPATH `$cleanProg "$MANPATH" "$wildCards"` setenv MANPATH `$cleanProg "$MANPATH" "$foamOldDirs"`
# Source project setup files # Source project setup files
@ -205,15 +212,16 @@ _foamSource $WM_PROJECT_DIR/etc/aliases.csh
# _foamSource $WM_PROJECT_DIR/etc/apps/paraview/cshrc # _foamSource $WM_PROJECT_DIR/etc/apps/paraview/cshrc
_foamSource $WM_PROJECT_DIR/etc/apps/paraview3/cshrc _foamSource $WM_PROJECT_DIR/etc/apps/paraview3/cshrc
# _foamSource $WM_PROJECT_DIR/etc/apps/ensight/cshrc # _foamSource $WM_PROJECT_DIR/etc/apps/ensight/cshrc
# _foamSource $WM_PROJECT_DIR/etc/apps/cint/cshrc
# Again clean environment (path, PATH, MANPATH, LD_LIBRARY_PATH) # Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#- Clean path/PATH. Only remove duplicates #- Clean path/PATH
set colonPath=`echo "$path" | sed -e 's/ /:/g'` set colonPath=`echo "$path" | sed -e 's/ /:/g'`
set PATH=`$cleanProg "$colonPath"` set cleanEnv=`$cleanProg "$colonPath"`
if ( $status == 0 ) then if ( $status == 0 ) then
set path=`echo "$PATH" | sed -e 's/:/ /g'` set path=`echo "$cleanEnv" | sed -e 's/:/ /g'`
endif endif
#- Clean LD_LIBRARY_PATH #- Clean LD_LIBRARY_PATH
@ -229,8 +237,7 @@ endif
# cleanup environment: # cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~
unset cleanProg unset cleanEnv cleanProg colonPath foamInstall foamOldDirs
unset wildCards
unset colonPath
unalias _foamSource unalias _foamSource
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------