flexibly adapt the ZDOTDIR to whatever the user want
authorJoerg Jaspert <joerg@debian.org>
Tue, 2 Apr 2013 21:35:07 +0000 (23:35 +0200)
committerJoerg Jaspert <joerg@debian.org>
Tue, 2 Apr 2013 21:41:48 +0000 (23:41 +0200)
doing that by using readlink or greadlink to see where our symlink
for .zshenv points to. Only if that doesnt work, fallback to hardcoded
path.

.zsh/zshenv.home

index 56b49ef..e49f9fd 100644 (file)
@@ -5,7 +5,20 @@
 # Written by Joerg Jaspert <joerg@debian.org>
 #
 ############
 # Written by Joerg Jaspert <joerg@debian.org>
 #
 ############
-ZDOTDIR=${ZDOTDIR:-"${HOME}/.zsh"}
+# This assumes that $HOME/.zshenv is a symlink to
+# $ZDOTDIR/zshenv.home (as is my default).
+if zp=$(readlink -f ${HOME}/.zshenv 2>/dev/null); then
+    zp=${zp%/*}
+elif zp=$(greadlink -f ${HOME}/.zshenv 2>/dev/null); then
+    # MacOS readlink isn't up to the task, user needs to
+    # install the gnu coreutils for it
+    zp=${zp%/*}
+else
+    # If both fail, use the "traditional" way of hardcoding
+    zp="${HOME}/.zsh"
+fi
+ZDOTDIR=${ZDOTDIR:-$zp}
+
 [ -r "${ZDOTDIR}/zshenv" ] && source "${ZDOTDIR}/zshenv"
 
 # If you want to "profile" the shell initialization, enable
 [ -r "${ZDOTDIR}/zshenv" ] && source "${ZDOTDIR}/zshenv"
 
 # If you want to "profile" the shell initialization, enable