setpath.pl [ENV_VAR] [:NEWPATH | NEWPATH: | -[-]OLDPATH]
Default ENV_VAR is PATH
:NEWPATH appends ":NEWPATH" at end of ENV_VAR
NEWPATH: prepends "NEWPATH:" at start of ENV_VAR
-OLDPATH deletes first instance of "OLDPATH" from ENV_VAR
--OLDPATH deletes all instances of "OLDPATH" from ENV_VAR
####
setpath.pl VAR1 :NEWPATH VAR2 OTHERPATH: VAR3 --BADPATH
#
# shell function would be:
function setpath { /full/path/to/setpath.pl $*; if ... };
##
##
#!/usr/bin/perl
use strict;
my $Usage = < $fName" );
for $varname ( keys %env_change ) {
my $varval = '';
if ( ! length( $ENV{$varname} )) {
$varval = $env_change{$varname}{prepend} .
$env_change{$varname}{append};
if ( $varval eq '' ) {
warn "No additions to non-existent $varname; skipping that...\n";
next;
}
}
else {
if ( exists( $env_change{$varname}{rmall} )) {
$ENV{$varname} =~ s/$_//g for ( @{$env_change{$varname}{rmall}} );
}
if ( exists( $env_change{$varname}{rm1st} )) {
$ENV{$varname} =~ s/$_// for ( @{$env_change{$varname}{rm1st}} );
}
$varval = join( ':',
$env_change{$varname}{prepend},
split( /:+/, $ENV{$varname} ),
$env_change{$varname}{append} );
}
$varval =~ s/^://;
$varval =~ s/:$//;
$varval =~ s/:{2,}/:/g;
print OUT "export $varname=$varval\n";
}
exit(0);