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.