On Sat, Nov 29, 2008 at 08:31:35PM -0800, Bart Schaefer wrote: > On Nov 25, 1:05am, Jonas Kramer wrote: > > > > # Control + B jumps to "base" directory. > > function return-to-base; { > > Not directly pertinent, but what's the semicolon for? Now that you ask, I don't know. I guess I'm just used to it. > > > function chpwd; { > > DIRECTORY="$PWD" > > while true; do > > if [ -f './.env.rc' ]; then > > source './.env.rc' > > break > > fi > > if [ -f './env' ]; then > > source './env' > > break > > fi > > [ $PWD = '/' ] && break > > cd -q .. > > done > > cd -q "$DIRECTORY" > > } > > > > Now when BASE points to a directory that contains a .env.rc file and I > > press ^B, it seems to work fine at first, the directory is updated and I > > get a new nice prompt. But then, no matter what I enter, after hitting > > return zsh crashes with a seg. fault. This seems to happen in > > hist.c:1138, where hptr points to NULL at that point. > > Are there any commands in ./.env.rc or ./env that manipulate the history? I don't know if commands executed in a chpwd hook function are added to the history (they shouldn't in my oppinion), but I'm not explicitly changing it in there. This is a sample .env.rc I'm using in a project: # vim:filetype=zsh export BASE=$PWD export PERL5LIB="$PWD/code/" /usr/bin/ctags --languages="Perl" -R "$PWD" Regards, Jonas --