Sick of your endlessly growing PATH?

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Envy           RdpO  Shell independent environment variable mgmt  JPRIT


1. Easy, safe upgrade from any other dot-file setup.  Tested with sh,
ksh, bash, zsh, csh, and tcsh.

2. A mechanism is provided for setting and prepending environment
variables in a variety of flexible ways.  All modifications are
reversible.

3. Machine generated .profile, .login, and crontab wrapper with
centrally specified essential environment variables.  Everything else
can be dependent on search paths.

Get it via http://www.perl.com/CPAN/authors/id/JPRIT/ !
  (Also see LinkTree & Manifest)


##################
# RECENT CHAN@ES #
##################


** 01-16-98 RELEASE 2.13

- I've been waiting for the code to stabilize.  This release seems
very stable so I am releasing it.  The csh support still needs to be
brought up to date and better documentation is in the works.

- Phased out support for backward-compatible envy state environment
variables.


** 12-20-97 RELEASE 2.10

- Envys that set ETOP are treated specially.  Only one should be
loadable at the same time.

- Added support for 'echo' in envy files.

- Components are no longer removed from ENVY_PATH.

- Logging of all envious activity to $ETOP/var/envy.log.

- Improved organization of *.part2.

- Adding multiple components with += incorrectly occurred in the
reverse order.  Fixed.

- Adjusted dependency tracking to reduce false warnings.

- '.' is no longer added to the front of the PATH by default.


----------------------------------------------------------------------

Here's what it looks like:

[joshua@grdevl137] ~% envy
   dailydb-dev                          imag-dbo-testdb
 x dev                                  imag-dev-2513
   dev-area-setup                       imag-dev-2519
   fame                                 imag-prod
   framemaker                           java
 x fvwm95-2.0.43a                       objstore
   gcc                                x openwin
   gems-1.9.1-dev                       printing
   gems-2.0-dev                         prod
   gems-2.0.alpha.14                    prod-new
   gems-dev                             research
   gems-intl-rpts                     x reuters
   gems-prod                            solaris
   imag-2519                            sunpro
   imag-batch-hilarydb                x sybase
   imag-batch-proddb                    tcltk
   imag-batch-testdb                    tcltk-7.6
   imag-dbo-hilarydb                    tcltk-8.0
   imag-dbo-proddb                   

The 'x' means 'loaded'.

[joshua@grdevl137] ~% envy list
All envys currently available (2.06):
 
   dailydb-dev         /nw/dev/usr/etc/envy/dailydb-dev.env
 x dev                 /nw/dev/usr/etc/envy/dev.env
   dev-area-setup      /nw/dev/usr/mo/dev-area-setup.mo
   fame                /nw/dist/prod/mo/fame.mo
   framemaker          /nw/dist/prod/etc/framemaker.mo
 x fvwm95-2.0.43a      /nw/dev/usr/mo/fvwm95-2.0.43a.mo
   gcc                 /nw/dev/usr/etc/envy/gcc.env
   gems-1.9.1-dev      /nw/dev/usr/etc/envy/gems-1.9.1-dev.env
   gems-2.0-dev        /nw/dev/usr/mo/gems-2.0-dev.mo
   gems-2.0.alpha.14   /nw/dev/usr/etc/envy/gems-2.0.alpha.14.env
   gems-dev            /nw/dev/usr/etc/envy/gems-dev.env
   gems-intl-rpts      /nw/dist/prod/mo/gems-intl-rpts.mo
   gems-prod           /nw/dist/prod/mo/gems-prod.mo
   imag-2519           /nw/dev/usr/etc/envy/imag-2519.env
   imag-batch-hilarydb /nw/dev/usr/etc/envy/imag-batch-hilarydb.env
   imag-batch-proddb   /nw/dist/prod/etc/imag-batch-proddb.mo
   imag-batch-testdb   /nw/dev/usr/etc/envy/imag-batch-testdb.env
   imag-dbo-hilarydb   /nw/dev/usr/etc/envy/imag-dbo-hilarydb.env
   imag-dbo-proddb     /nw/dev/usr/etc/envy/imag-dbo-proddb.env
   imag-dbo-testdb     /nw/dev/usr/etc/envy/imag-dbo-testdb.env
   imag-dev-2513       /nw/dist/prod/etc/imag-dev-2513.mo
   imag-dev-2519       /nw/dist/prod/etc/imag-dev-2519.mo
   imag-prod           /nw/dev/usr/etc/envy/imag-prod.env
   java                /nw/dist/prod/etc/java.mo
   objstore            /nw/dist/prod/etc/objstore.mo
 x openwin             /nw/dev/usr/mo/openwin.mo
   ...

[joshua@grdevl137] ~% cat /nw/dev/usr/mo/openwin.mo
# X11 and Motif
#
PATH+=/usr/dt/bin:/usr/openwin/bin
MANPATH+=/usr/dt/man:/usr/openwin/man
LD_LIBRARY_PATH+=/usr/dt/lib:/usr/openwin/lib
OPENWINHOME=/usr/openwin

This means that when 'openwin' is loaded, two components are prepended
to the PATH, MANPATH, and LD_LIBRARY_PATH; and OPENWINHOME is set to
/usr/openwin.  What makes envy unique is that YOU CAN ALSO UNLOAD
'openwin' to unprepend and unset each of the variables modified during
the load.

----------------------------------------------------------------------

* How does a typical install work?

First, edit envy_config.pm and install envy.  Then you need to setup
the initial production & development (& test?) environments.  $ETOP
needs to be set to the top of your production tree such that:

  $ETOP/(bin|etc|include|lib|man|share|var)

You'll need an prod.env that looks like this:

  dimension central-tree
  ETOP=/nw/prod/usr
  PATH+=/nw/prod/usr/bin
  LD_LIBRARY_PATH+=/nw/prod/usr/lib
  PERL5LIB+=/nw/prod/usr/lib/perl5
  MANPATH+=/nw/prod/usr/man:/nw/prod/usr/lib/perl5/man
  ENVY_PATH+=/nw/prod/usr/etc/envy

You can also create a dev.env file for development:

  dimension central-tree
  ETOP=/nw/dev/usr
  PATH+=/nw/dev/usr/bin
  LD_LIBRARY_PATH+=/nw/dev/usr/lib
  PERL5LIB+=/nw/dev/usr/lib/perl5
  MANPATH+=/nw/dev/usr/man:/nw/dev/usr/lib/perl5/man
  ENVY_PATH+=/nw/dev/usr/etc/envy

Put both of these files in /nw/prod/usr/etc/envy/.  To set up a
particular user for envy, all you have to do is replace $HOME/.profile
or $HOME/.login with symlinks:

  ln -s /nw/prod/usr/etc/login/dot.profile $HOME/.profile
  ln -s /nw/prod/usr/etc/login/dot.login $HOME/.login

Any old $HOME/dot files will be renamed if necessary (and not
deleted).

----------------------------------------------------------------------

Credits:
  Sergei Poliakoff - Global Technology Architect
  Alexander Shugayev - System Administrator
  Devine Kerr - Developer
  Ken Nawyn - Senior System Administrator
  Joshua Pritikin - Coder

-------------------------------------------------------------------
Copyright  1997-1998 Joshua Nathaniel Pritikin.  All rights reserved.

This package is free software and is provided "as is" without express
or implied warranty.  It may be used, redistributed and/or modified
under the terms of the Perl Artistic License (see
http://www.perl.com/perl/misc/Artistic.html)
