From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28937 invoked by alias); 10 Jan 2014 19:16:09 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 18306 Received: (qmail 11174 invoked from network); 10 Jan 2014 19:15:54 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, FREEMAIL_FROM,NML_ADSP_CUSTOM_MED,RCVD_IN_DNSWL_NONE,RCVD_NUMERIC_HELO, SPF_HELO_PASS,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.3.2 X-Injected-Via-Gmane: http://gmane.org/ To: zsh-users@zsh.org From: Christian Neukirchen Subject: On setting OLDPWD Date: Fri, 10 Jan 2014 20:15:39 +0100 Sender: chris@juno Message-ID: <8738kvejhg.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 141.84.9.5 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Hi, I'm using this small snippet to persist and share my dirstack across multiple zsh: DIRSTACKSIZE=9 DIRSTACKFILE=~/.zdirs if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then dirstack=( ${(f)"$(< $DIRSTACKFILE)"} ) [[ -d $dirstack[1] ]] && cd $dirstack[1] && cd $OLDPWD fi chpwd() { local -a dirs; dirs=( "$PWD" ${(f)"$(< $DIRSTACKFILE)"} ) print -l ${${(u)dirs}[0,$DIRSTACKSIZE]} >$DIRSTACKFILE } This works very nicely, except for the case $dirstack[1] is on a "stuck" directory (e.g. a stale NFS or a broken FUSE device). In that case, zsh nicely locks up during start. Is there any way to change where "cd -" would go to, without actually cd'ing there? (Setting dirstack is not enough, it works for "cd -1" but not for "cd -". Setting OLDPWD doesn't help either.) Ideas? -- Christian Neukirchen http://chneukirchen.org