For instance, how about a department variable (@dept) or a cluster
variable (@cluster) for sites who have files that are department or
cluster specific.
The way we did this at Apollo for Domain/OS is we had the name resolver
expand environment variables. I forget the exact syntax, but something like
/usr/local/${SYSTYPE}/bin
would expand to different places depending on what SYSTYPE was set to. When
you logged in, your SYSTYPE would be set to the right thing, but you could
change it if you wanted, on a per-process basis. Since it used existing
mechanism for the variables, it was easy to set the variables either in a
shell or in a program. And it's completely extensible since you can add
variables any time you want. We invented this for multiple universes (bsd
vs sysV) but ended up using it for lots of different things, including
architecture dependent files.
You do have to give some thought to security if you implement this.