summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/spack/csh/pathadd.csh4
-rwxr-xr-xshare/spack/setup-env.csh49
-rwxr-xr-xshare/spack/setup-env.fish4
-rwxr-xr-xshare/spack/setup-env.sh4
4 files changed, 30 insertions, 31 deletions
diff --git a/share/spack/csh/pathadd.csh b/share/spack/csh/pathadd.csh
index 5033df65ca..df46b00f3f 100644
--- a/share/spack/csh/pathadd.csh
+++ b/share/spack/csh/pathadd.csh
@@ -25,8 +25,8 @@ if ($_pa_set == 1) then
eval set _pa_old_value='$'$_pa_varname
endif
-# Do the actual prepending here, if it is a dir and not already in the path
-if ( -d $_pa_new_path && \:$_pa_old_value\: !~ *\:$_pa_new_path\:* ) then
+# Do the actual prepending here, if it is a dir and not first in the path
+if ( -d $_pa_new_path && $_pa_old_value\: !~ $_pa_new_path\:* ) then
if ("x$_pa_old_value" == "x") then
setenv $_pa_varname $_pa_new_path
else
diff --git a/share/spack/setup-env.csh b/share/spack/setup-env.csh
index d18a4c72b7..14dcee56b7 100755
--- a/share/spack/setup-env.csh
+++ b/share/spack/setup-env.csh
@@ -17,38 +17,37 @@ if ($?_sp_initializing) then
endif
setenv _sp_initializing true
-# If SPACK_ROOT is not set, we'll try to find it ourselves.
+# find SPACK_ROOT.
# csh/tcsh don't have a built-in way to do this, but both keep files
# they are sourcing open. We use /proc on linux and lsof on macs to
# find this script's full path in the current process's open files.
-if (! $?SPACK_ROOT) then
- # figure out a command to list open files
- if (-d /proc/$$/fd) then
- set _sp_lsof = "ls -l /proc/$$/fd"
- else
- which lsof > /dev/null
- if ($? == 0) then
- set _sp_lsof = "lsof -p $$"
- endif
- endif
- # filter this script out of list of open files
- if ( $?_sp_lsof ) then
- set _sp_source_file = `$_sp_lsof | sed -e 's/^[^/]*//' | grep "/setup-env.csh"`
+# figure out a command to list open files
+if (-d /proc/$$/fd) then
+ set _sp_lsof = "ls -l /proc/$$/fd"
+else
+ which lsof > /dev/null
+ if ($? == 0) then
+ set _sp_lsof = "lsof -p $$"
endif
+endif
- # This script is in $SPACK_ROOT/share/spack; get the root with dirname
- if ($?_sp_source_file) then
- set _sp_share_spack = `dirname "$_sp_source_file"`
- set _sp_share = `dirname "$_sp_share_spack"`
- setenv SPACK_ROOT `dirname "$_sp_share"`
- endif
+# filter this script out of list of open files
+if ( $?_sp_lsof ) then
+ set _sp_source_file = `$_sp_lsof | sed -e 's/^[^/]*//' | grep "/setup-env.csh"`
+endif
- if (! $?SPACK_ROOT) then
- echo "==> Error: setup-env.csh couldn't figure out where spack lives."
- echo " Set SPACK_ROOT to the root of your spack installation and try again."
- exit 1
- endif
+# This script is in $SPACK_ROOT/share/spack; get the root with dirname
+if ($?_sp_source_file) then
+ set _sp_share_spack = `dirname "$_sp_source_file"`
+ set _sp_share = `dirname "$_sp_share_spack"`
+ setenv SPACK_ROOT `dirname "$_sp_share"`
+endif
+
+if (! $?SPACK_ROOT) then
+ echo "==> Error: setup-env.csh couldn't figure out where spack lives."
+ echo " Set SPACK_ROOT to the root of your spack installation and try again."
+ exit 1
endif
# Command aliases point at separate source files
diff --git a/share/spack/setup-env.fish b/share/spack/setup-env.fish
index 7239e4cbee..a7aac67430 100755
--- a/share/spack/setup-env.fish
+++ b/share/spack/setup-env.fish
@@ -648,10 +648,10 @@ function spack_pathadd -d "Add path to specified variable (defaults to PATH)"
# passed to regular expression matching (`string match -r`)
set -l _a "$pa_oldvalue"
- # skip path if it is already contained in the variable
+ # skip path if it is already the first in the variable
# note spaces in regular expression: we're matching to a space delimited
# list of paths
- if not echo $_a | string match -q -r " *$pa_new_path *"
+ if not echo $_a | string match -q -r "^$pa_new_path *"
if test -n "$pa_oldvalue"
set $pa_varname $pa_new_path $pa_oldvalue
else
diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh
index d7317818c9..f3e87fe514 100755
--- a/share/spack/setup-env.sh
+++ b/share/spack/setup-env.sh
@@ -214,9 +214,9 @@ _spack_pathadd() {
# Do the actual prepending here.
eval "_pa_oldvalue=\${${_pa_varname}:-}"
- _pa_canonical=":$_pa_oldvalue:"
+ _pa_canonical="$_pa_oldvalue:"
if [ -d "$_pa_new_path" ] && \
- [ "${_pa_canonical#*:${_pa_new_path}:}" = "${_pa_canonical}" ];
+ [ "${_pa_canonical#$_pa_new_path:}" = "$_pa_canonical" ];
then
if [ -n "$_pa_oldvalue" ]; then
eval "export $_pa_varname=\"$_pa_new_path:$_pa_oldvalue\""