Ensure the CWD precedes PROFILE_HOME in new CDPATH.
authorIain Patterson <me@iain.cx>
Tue, 2 Dec 2014 13:48:39 +0000 (13:48 +0000)
committerIain Patterson <me@iain.cx>
Thu, 11 Feb 2016 13:09:16 +0000 (13:09 +0000)
If CDPATH was set to PROFILE_HOME, as was the case when becoming a user
with no default CDPATH, we would end up in the unexpected situation of
typing, say, "cd .ssh" from the target user's home directory but
actually changing to the profile user's .ssh directory.

The new logic for CDPATH is as follows:

Do nothing if CDPATH already contains PROFILE_HOME.
Otherwise set it to . if empty then unconditionally append PROFILE_HOME.

.profile.d/cdpath.bashrc

index 4b8fda8..68efbff 100644 (file)
@@ -1 +1 @@
-[ -n "$PROFILE_HOME" ] && CDPATH="${CDPATH:+$CDPATH:}$PROFILE_HOME"
+[ -n "$PROFILE_HOME" -a "${CDPATH/:$PROFILE_HOME}" = "$CDPATH" ] && CDPATH="${CDPATH:-.}:$PROFILE_HOME"