summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/z/z.sh16
1 files changed, 10 insertions, 6 deletions
diff --git a/plugins/z/z.sh b/plugins/z/z.sh
index 13008a60e..67f504e27 100644
--- a/plugins/z/z.sh
+++ b/plugins/z/z.sh
@@ -42,6 +42,8 @@ _z() {
[ -z "$_Z_OWNER" -a -f "$datafile" -a ! -O "$datafile" ] && return
_z_dirs () {
+ [ -f "$datafile" ] || return
+
local line
while read line; do
# only count directories
@@ -54,14 +56,16 @@ _z() {
if [ "$1" = "--add" ]; then
shift
- # $HOME isn't worth matching
- [ "$*" = "$HOME" ] && return
+ # $HOME and / aren't worth matching
+ [ "$*" = "$HOME" -o "$*" = '/' ] && return
# don't track excluded directory trees
- local exclude
- for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do
- case "$*" in "$exclude*") return;; esac
- done
+ if [ ${#_Z_EXCLUDE_DIRS[@]} -gt 0 ]; then
+ local exclude
+ for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do
+ case "$*" in "$exclude"*) return;; esac
+ done
+ fi
# maintain the data file
local tempfile="$datafile.$RANDOM"