Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: problem with named directories over the net



On Jan 14,  5:40pm, Dominik Vogt wrote:
} Subject: Re: problem with named directories over the net
}
} Works like a charm - with a few minor modifications.  First, you
} can put that in the chpwd function to have the code executed only
} when the working directory changes.

I had been about to suggest that myself, but if you ever happen to
'setopt chaselinks' you could end up with an infinite loop on your
hands, so I didn't.  Also, if it's in chpwd it won't get executed
the first time a new shell starts up, which might make a difference
in a few rare cases.

Of course you can insert a call to chpwd at the end of your .zshrc, and if
you use the zsh/parameter module you could prevent the infinite loop with:

    chpwd ()
    {
	[[ $funcstack == chpwd*chpwd* ]] && return
	# ... etc. ...
    }

} Second, the slash before the
} asterisk in the case value prevents that it works on the top
} directory itself since PWD does not have the trailing slash for
} directories.  I now use this script:
} 
}   chpwd ()
}   {
}     case "$PWD" in
}       /net/server/share/home*)
}         cd '/net/server/share' ''
}         ;;
}       /net/server/share/common*)
}         cd '/net/server/share' ''
}         ;;
}       *)
}         ;;
}     esac
}   }

Is it really the case that only `home' and `common' are automounted?
Anyway, having an empty *) fallthrough is redundant.  Why not just:

    chpwd ()
    {
	[[ $PWD == /net/server/share/* ]] && cd /net/server/share ''
    }

(plus possible loop protection per above)?

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   



Messages sorted by: Reverse Date, Date, Thread, Author