go语言/golang 自动升级配置
目的
为了解决golang升级复杂的手工操作流程,直接编写了bash脚本,获取最新的golang版本,然后删除旧版本,替换成新版本
脚本实现
#!/bin/bash
# 1. 获取最新 Go 版本号
# 使用 go.dev 官方提供的文本接口获取最新版本号 (例如 go1.22.5)
echo "正在检查 Go 语言最新版本..."
LATEST_GO_VERSION=$(curl -s https://go.dev/VERSION?m=text | head -n 1)
if [ -z "$LATEST_GO_VERSION" ]; then
echo "❌ 无法获取最新版本号,请检查网络连接。"
exit 1
fi
echo "✅ 检测到最新版本为: $LATEST_GO_VERSION"
# 定义文件名
OS="linux"
ARCH="amd64" # 如果你是 ARM 架构 (如树莓派或某些云主机),请改为 arm64
FILE_NAME="$LATEST_GO_VERSION.$OS-$ARCH.tar.gz"
DOWNLOAD_URL="https://go.dev/dl/$FILE_NAME"
# 2. 下载安装包
echo "⬇️ 正在下载 $FILE_NAME ..."
wget -q --show-progress "$DOWNLOAD_URL"
if [ $? -ne 0 ]; then
echo "❌ 下载失败,请检查网络或 URL。"
exit 1
fi
# 3. 清理旧版本 (关键步骤,防止文件冲突)
echo "🧹 正在清理旧版本 (/usr/local/go)..."
if [ -d "/usr/local/go" ]; then
sudo rm -rf /usr/local/go
echo " 已删除旧版本。"
else
echo " 未检测到旧版本,跳过清理。"
fi
# 4. 解压新版本到 /usr/local
echo "📦 正在解压安装到 /usr/local ..."
sudo tar -C /usr/local -xzf "$FILE_NAME"
# 清理下载的压缩包
rm -f "$FILE_NAME"
# 5. 配置 Zsh 环境变量
# 检查是否已经配置过 PATH,避免重复添加
CONFIG_FILE="$HOME/.zshrc"
GO_BIN_PATH="/usr/local/go/bin"
if grep -q "$GO_BIN_PATH" "$CONFIG_FILE"; then
echo "✅ 环境变量已存在于 $CONFIG_FILE,无需重复添加。"
else
echo "📝 正在添加环境变量到 $CONFIG_FILE ..."
echo "" >> "$CONFIG_FILE"
echo "# Go Language Path" >> "$CONFIG_FILE"
echo "export PATH=\$PATH:$GO_BIN_PATH" >> "$CONFIG_FILE"
echo "✅ 环境变量添加成功。"
fi
echo "------------------------------------------------"
echo "🎉 安装/升级完成!"
echo "请执行以下命令使环境变量立即生效:"
echo "source $CONFIG_FILE"
echo ""
echo "验证安装:"
echo "go version"
echo "------------------------------------------------"
脚本功能说明
动态版本获取:脚本通过访问 https://go.dev/VERSION?m=text 自动获取当前官方最新的稳定版本号。这意味着下个月 Go 更新了,你再次运行这个脚本,它就会自动下载更新的版本。
安全清理:严格遵守官方建议,先执行 rm -rf /usr/local/go,确保新旧文件不会混杂导致损坏。
权限分离:脚本本身不需要用 root 运行,只在操作 /usr/local 系统目录时使用 sudo,这样可以避免把你的 ~/.zshrc 文件的权限错误地改成 root。
Zsh 适配:脚本专门针对 zsh,并具有幂等性(Idempotency),它会先检查你的配置文件里有没有加过 Path,如果加过就不会重复添加。

浙公网安备 33010602011771号