GIF89a; EcchiShell v1.0
//proc/self/root/usr/share/Modules/> $list done | tr '\n' $sep | sed -e "s/\\$sep\$//" rm $list } #Keys that changed for key in "${!env1[@]}" do if [ "${env1[$key]}" != "${env2[$key]}" ] then #Working directory change if [ "$key" = PWD ] then if [ -n "$prefix" ] then echo -e "chdir\t\t${env2[PWD]}" | sed -e s,$prefix,\$prefix,g else echo -e "chdir\t\t${env2[PWD]}" fi #Test for delete elif [ -z "${env2[$key]}" ] then echo -e "unsetenv\t${key}\t${env2[$key]}" #Test for prepend elif [ "${env2[$key]%${env1[$key]}}" != "${env2[$key]}" ] then added=${env2[$key]%${env1[$key]}} sep=${added: -1} added=${added%$sep} added=$(dedup $added $sep) if [ $sep = : ] then echo -e "prepend-path\t$key\t${added}" else echo -e "prepend-path\t--delim $sep\t$key\t${added}" fi #Test for prepend plus : added at end (MANPATH) elif [ "${key: -4}" = PATH -a "${env2[$key]%${env1[$key]}:}" != "${env2[$key]}" ] then added=$(dedup ${env2[$key]%${env1[$key]}:}) echo -e "prepend-path\t$key\t${added}" #Test for append elif [ "${env2[$key]#${env1[$key]}}" != "${env2[$key]}" ] then added=${env2[$key]#${env1[$key]}} sep=${added:0:1} added=${added#$sep} added=$(dedup $added $sep) if [ $sep = : ] then echo -e "append-path\t$key\t${added}" else echo -e "append-path\t--delim $sep\t$key\t${added}" fi #Test for prepend plus append elif [ "${env2[$key]%${env1[$key]}*}" != "${env2[$key]}" ] then prepended=${env2[$key]%${env1[$key]}*} presep=${prepended: -1} prepended=${prepended%$presep} prepended=$(dedup $prepended $presep) appended=${env2[$key]#*${env1[$key]}} appsep=${appended:0:1} appended=${appended#$appsep} appended=$(dedup $appended $appsep) if [ $presep != $appsep -o -z "$prepended" -o -z "$appended" ] then #Unhandled echo "Unhandled change of $key" 1>&2 echo "Before <${env1[$key]}>" 1>&2 echo "After <${env2[$key]}>" 1>&2 else if [ $presep = : ] then echo -e "prepend-path\t$key\t${prepended}" echo -e "append-path\t$key\t${appended}" else echo -e "prepend-path\t--delim $presep\t$key\t${prepended}" echo -e "append-path\t--delim $appsep\t$key\t${appended}" fi fi else #Unhandled echo "Unhandled change of $key" 1>&2 echo "Before <${env1[$key]}>" 1>&2 echo "After <${env2[$key]}>" 1>&2 fi fi #Delete keys we have handled unset env1[$key] unset env2[$key] done #New keys for key in "${!env2[@]}" do if [ "$key" = OLDPWD ] then continue fi #Use prepend-path for new paths if [ "${key: -4}" = PATH -o "${key: -4}" = DIRS -o "${key: -4}" = FILES ] then # TODO - Need to handle stripping of default MANPATH echo -e "prepend-path\t${key}\t"$(dedup ${env2[$key]}) else if [ -n "$prefix" ] then echo -e "setenv\t\t${key}\t${env2[$key]}" | sed -e s,$prefix,\$prefix,g else echo -e "setenv\t\t${key}\t${env2[$key]}" fi fi done ) | sort