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)