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 bootstrap environment variables.  Everything else
is determined dynamically.

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


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


** 03-05-98 RELEASE 2.15

- Fixed handling of $HOME/.envy.

- Improvements to Envy::Load.


** 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.


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

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/dist/prod
  ESTAGE=prod
 
  PATH+=/nw/dist/prod/bin
  LD_LIBRARY_PATH+=/nw/dist/prod/lib
  MANPATH+=/nw/dist/prod/man
  ENVY_PATH+=$ETOP/etc/envy

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

  dimension central-tree
  ETOP=/nw/dev/usr
  ESTAGE=dev

  PATH+=$ETOP/bin
  LD_LIBRARY_PATH+=$ETOP/lib
  MANPATH+=$ETOP/man
  ENVY_PATH+=$ETOP/etc/envy

Put both of these files in $ETOP/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 $ETOP/etc/login/dot.profile $HOME/.profile
  ln -s $ETOP/etc/login/dot.login $HOME/.login

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

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

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

Support:
  pritikin@mindspring.com

-------------------------------------------------------------------
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)
