自动清除无效环境变量脚本

wen 实用脚本 2

本文目录导读:

自动清除无效环境变量脚本

  1. Windows 版本 (PowerShell)
  2. Linux 版本 (Bash)
  3. macOS 版本
  4. 自动化配置
  5. 使用说明
  6. 注意事项

Windows 版本 (PowerShell)

# 自动清除无效环境变量脚本 (Windows PowerShell)
# 保存为: Clear-InvalidEnvVars.ps1
function Clear-InvalidEnvironmentVariables {
    Write-Host "开始检查并清除无效环境变量..." -ForegroundColor Cyan
    $invalidVars = @()
    $allVars = [System.Environment]::GetEnvironmentVariables("User")
    foreach ($var in $allVars.Keys) {
        $value = $allVars[$var]
        # 检查路径类型的变量
        if ($var -match "PATH|Path|PATHEXT") {
            $paths = $value -split ';'
            $validPaths = @()
            foreach ($path in $paths) {
                if ($path -and (Test-Path $path -IsValid)) {
                    $validPaths += $path
                } else {
                    Write-Host "  无效路径: $path" -ForegroundColor Yellow
                }
            }
            if ($validPaths.Count -ne $paths.Count) {
                $newValue = $validPaths -join ';'
                [System.Environment]::SetEnvironmentVariable($var, $newValue, "User")
                Write-Host "已更新环境变量: $var" -ForegroundColor Green
                $invalidVars += $var
            }
        }
    }
    if ($invalidVars.Count -eq 0) {
        Write-Host "没有发现无效环境变量" -ForegroundColor Green
    } else {
        Write-Host "已清除 $(invalidVars.Count) 个环境变量中的无效路径" -ForegroundColor Cyan
    }
}
# 执行清理
Clear-InvalidEnvironmentVariables

Linux 版本 (Bash)

#!/bin/bash
# 自动清除无效环境变量脚本 (Linux Bash)
# 保存为: clear_invalid_envars.sh
clear_invalid_envars() {
    echo -e "\e[36m开始检查并清除无效环境变量...\e[0m"
    # 需要检查的路径相关变量
    path_vars=("PATH" "LD_LIBRARY_PATH" "PYTHONPATH" "MANPATH" "INFOPATH")
    for var_name in "${path_vars[@]}"; do
        if [ -n "${!var_name}" ]; then
            IFS=':' read -ra paths <<< "${!var_name}"
            valid_paths=()
            for path in "${paths[@]}"; do
                if [ -n "$path" ] && [ -d "$path" ]; then
                    valid_paths+=("$path")
                else
                    echo -e "\e[33m  无效路径: $path (环境变量: $var_name)\e[0m"
                fi
            done
            # 重新组合有效路径
            new_value=$(IFS=':'; echo "${valid_paths[*]}")
            export "$var_name=$new_value"
            echo -e "\e[32m已更新环境变量: $var_name\e[0m"
        fi
    done
    echo -e "\e[36m环境变量清理完成\e[0m"
}
# 执行清理
clear_invalid_envars
# 添加到 .bashrc 或 .bash_profile 以自动执行
# 取消注释以下行以添加到当前会话
# clear_invalid_envars

macOS 版本

#!/bin/bash
# 自动清除无效环境变量脚本 (macOS)
# 保存为: clear_macos_envars.sh
clear_macos_envars() {
    echo -e "\033[36m开始检查并清除无效环境变量...\033[0m"
    # 检查常见的路径变量
    path_vars=("PATH" "MANPATH" "INFOPATH" "PYTHONPATH" "RUBYLIB")
    for var_name in "${path_vars[@]}"; do
        if [ -n "${!var_name}" ]; then
            IFS=':' read -ra paths <<< "${!var_name}"
            valid_paths=()
            for path in "${paths[@]}"; do
                if [ -n "$path" ] && [ -d "$path" ]; then
                    valid_paths+=("$path")
                else
                    echo -e "\033[33m  无效路径: $path ($var_name)\033[0m"
                fi
            done
            if [ ${#valid_paths[@]} -ne ${#paths[@]} ]; then
                new_value=$(IFS=':'; echo "${valid_paths[*]}")
                export "$var_name=$new_value"
                echo -e "\033[32m已更新: $var_name\033[0m"
            fi
        fi
    done
    echo -e "\033[36m清理完成\033[0m"
}
# 显示使用说明
show_help() {
    echo "使用方法:"
    echo "  直接运行: $0"
    echo "  添加到 Shell 配置: echo 'source $0' >> ~/.zshrc"
}
# 主程序
case "$1" in
    --help|-h)
        show_help
        ;;
    *)
        clear_macos_envars
        ;;
esac

自动化配置

Windows 自动运行

将脚本添加到任务计划程序,或添加到启动脚本:

# 添加 Windows 启动项
$scriptPath = "C:\Scripts\Clear-InvalidEnvVars.ps1"
$shortcutPath = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\ClearEnvVars.lnk"
$wshell = New-Object -ComObject WScript.Shell
$shortcut = $wshell.CreateShortcut($shortcutPath)
$shortcut.TargetPath = "powershell.exe"
$shortcut.Arguments = "-WindowStyle Hidden -ExecutionPolicy Bypass -File `"$scriptPath`""
$shortcut.Save()

Linux/macOS 自动运行

添加到 Shell 配置文件:

# 添加到 ~/.bashrc 或 ~/.zshrc
echo 'source /path/to/clear_invalid_envars.sh' >> ~/.bashrc
# 或者添加到登录脚本
echo '/path/to/clear_invalid_envars.sh' >> ~/.profile

使用说明

  1. Windows: 以管理员身份运行 PowerShell,执行脚本
  2. Linux: chmod +x clear_invalid_envars.sh && ./clear_invalid_envars.sh
  3. macOS: chmod +x clear_macos_envars.sh && ./clear_macos_envars.sh

注意事项

  • 备份重要的环境变量配置
  • 某些程序可能需要特定路径,删除前请确认
  • 建议在测试环境先运行一遍
  • Windows 可能需要管理员权限修改系统环境变量

这个脚本会自动清理不存在的目录路径,修复损坏的路径变量,并更新到当前会话中。

抱歉,评论功能暂时关闭!