#!/usr/bin/bash # THIS SCRIPT IS A UTILITY TO SET ENVIRONMENT VARIABLES PERMANENTLY USING # THE WINDOWS REGISTRY. # USES 'REGTOOL' TO MODIFY THE WINDOWS REGISTRY. # 'REGTOOL' IS PART OF THE CYGWIN DISTRIBUTION PROVIDED BY RED HAT # # THERE'S ONE SLIGHT PROBLEM IN THAT AFTER YOU CHANGE THE REGISTRY # WITH 'REGTOOL' EXPLORER DOESN'T REALIZE THAT IT HAS BEEN CHANGED, # SO PROCESSES CREATED AFTER # TO NOTIFY EXPLORER (AND OTHER APPS) THAT THE ENVIRONMENT HAS CHANGED # WE CALL A LITTLE 1-LINE Win32 UTIL PROGRAM '_UPDATEREGENV' # SEE ALSO 'PRINTREGENV', 'UNSETREGENV' USERENV="/user/Environment" GLOBENV="/machine/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" MSG="Environment modified in registry. Restart apps to pick up the change." ENV=$USERENV TYPE="-s" function usage() { echo "Usage: " `basename $0` "[-global] VAR [VALUE]"; exit; } if [ $# = 0 ]; then usage fi if [ "$1" = "-global" ]; then shift ENV=$GLOBENV fi if [ $# = 2 ]; then # check for $2 having %...% pattern if so use -e, not -s if [ `echo $2 | grep "%[^%][^%]*%"` ]; then TYPE=-e fi regtool $TYPE set "$ENV"/"$1" "$2" _updateregenv echo $MSG elif [ $# = 1 ]; then regtool -q unset "$USERENV"/"$1" regtool -q unset "$GLOBENV"/"$1" _updateregenv echo $MSG else echo "Wrong number of arguments" usage fi