summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/dirspersist.zsh3
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/dirspersist.zsh b/lib/dirspersist.zsh
index 973107c52..d694c55e2 100644
--- a/lib/dirspersist.zsh
+++ b/lib/dirspersist.zsh
@@ -5,8 +5,7 @@
# Run dirpersiststore in ~/.zlogout
dirpersiststore () {
-# FIXME: need to escape all shell metacharacters, not just spaces!
- dirs -p | sed 's/ /\\ /g;s/&/\\&/;s/^/pushd -q /;1!G;h;$!d;' > ~/.zdirstore
+ dirs -p | tail -r | perl -ne 'chomp;s/([& ])/\\$1/g ;print "if [ -d $_ ]; then pushd -q $_; fi\n"' > ~/.zdirstore
}
dirpersistrestore () {