set_env 1.3.4

Sets environment variables permanently across all major platforms
Documentation
# ----------------------------------SET_ENV_BEG
# ----------------------------------VER${VER}
# ----------------------------------SET_ENV_UFNS_BEG
function setenv_set([string]$name, [string]$value) {
    New-Item env:\$name -Value $value -Force | Out-Null
}

function setenv_unset([string]$name) {
    if (Test-Path env:\$name) {
        Clear-Item env:\$name | Out-Null
    }
}

function setenv_set_if_not_exist([string]$name, [string]$value) {
    if ( -Not (Test-Path env:\$name) ) {
        setenv_set $name $value
    }
}

function setenv_prepend([string]$name, [string]$value) {

    [Environment]::SetEnvironmentVariable($name, "$value;$(Get-Content -Path env:$name)", "Process")
}

function setenv_append([string]$name, [string]$value) {
    [Environment]::SetEnvironmentVariable($name, "$(Get-Content -Path env:$name);$value", "Process")
}

function setenv_path_append([string]$value) {
    $env:Path += ";$value"
}

function setenv_path_prepend([string]$value) {
    $env:Path = "$value;$env:Path"
}

function setenv_path_append_if_not_contains([string]$value) {
    $paths = $env:Path.Split(";");
    if ($paths -notcontains "$value") {
        setenv_path_append $value
    }
}

function setenv_path_prepend_if_not_contains([string]$value) {
    $paths = $env:Path.Split(";");
    if ($paths -notcontains "$value") {
        setenv_path_prepend $value
    }
}
# ----------------------------------SET_ENV_UFNS_END
# ----------------------------------SET_ENV_DEFS_BEG
# ----------------------------------SET_ENV_DEFS_END
# ----------------------------------SET_ENV_END