Some users insist on using bash
. This is a good shell, but not as
good as zsh
. But, I do want them to be able to use the per
directory umask
as well as all the zsh
users.
So I started digging, as the bash
shell does not support a chpwd
hook.
This is what I came up with:
chpwd()
{ # Set the initial umask
case "${PWD}/"
in
/etc/puppet/*)
um=$(umask)
umask 007
;;
*)
[[ x"${um}" != x"" ]] && umask ${um}
;;
esac
}
function cd()
{
builtin cd "${@}"
chpwd
}
Now, when I change to the directory /etc/puppet
I do get a umask
of 007
and when I cd
somewhere else, I do get the original umask
.
I do redefine the intercal cd
command to run the chpwd
hook. There must be
a more elegant way to do this, but this does the job.