zsh change dir after hook w/`chpwd_functions`
How does rvm work? You change to a directory and rvm has determined which version of ruby you're using.
In bash
, the cd
command is overriden with a cd
function. This isn't necessary in zsh
because zsh
has hooks that execute after you change a directory.
If you have rvm installed in zsh you'll see this:
> echo $chpwd_functions
__rvm_cd_functions_set
> echo ${(t)chpwd_functions}
array
chpwd_functions
is an array of functions that will be executed after you run cd
.
Within the function you can use the $OLDPWD and $PWD env vars to programatically determine where you are like this:
> huh() { echo 'one sec...' echo $OLDPWD && echo $PWD }
> chpwd_functions+=huh
> cd newdir
one sec...
olddir
newdir
You can read more about hook functions in the zsh docs.
Tweet