惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

云野开源志

OpenClaw npm 升级踩坑记:从版本冲突到模块丢失 免责声明 openclaw(moltbot、Clawdbot)常见异常 大模型配置-千问免费版 初始化OpenClaw 安装openclaw记录 大年初一桃花谷 CheckSSL.sh - SSL证书到期时间监控脚本 install-cri-docker.sh - cri-dockerd安装脚本 install-docker.sh - Docker Engine快速安装脚本 install-docker2.sh - Docker 交互式安装脚本 install-nginx.sh - Nginx官方源快速安装脚本 install-zerotier.sh - ZeroTier 虚拟网络快速安装脚本 mng.sh - Nginx配置文件合并脚本 OpenSSL.sh - 自签名 SSL 证书生成脚本 SystemInfoMonitor.sh - 系统资源监控告警脚本 UpdateImages.sh - Docker 镜像批量更新脚本 为Hugo Next主题添加Umami统计支持 解忧杂货铺 - 栏目声明 Certd - 解决多平台SSL证书管理难题的神器 轻量级网络端口监控工具 GeoLite2 自动搬运仓库使用手册 MaxMind 免费账号注册 CloudFlare Accel Docker 搭建私有 DNS 服务器 hugo-theme-stack集成Umami openresty编译添加geoip2模块支持 GPU加速云原生应用,开启高性能计算新纪元 5. K8S Service与Ingress 4. K8S 控制器 Rancher搭建 3. K8S Pod 资源管理 2. K8S 基础资源管理 1. K8S 简介和认证介绍 Rancher集成AzureAD认证 Harbor 部署搭建 站点留言板 关于 友情链接
g.sh - Go语言环境管理工具安装脚本
云野开源志 · 2026-01-26 · via 云野开源志

总结摘要

g.sh 是一个用于安装 g 工具的 Shell 脚本,g是轻量级的 Go语言版本管理工具,支持快速安装、切换和管理多个 Go版本。

脚本功能

g.sh 是一个用于安装 g 工具的自动化脚本。g是一个轻量级的 Go语言版本管理工具,类似 Node.js的 nvm或 Ruby的 rbenv。它支持快速下载、安装、切换和管理多个 Go版本,自动配置环境变量,简化 Go开发环境的搭建和维护。

核心特性

  • 一键安装 g 工具(默认版本 1.7.0)
  • 自动配置 GOROOT和GOPATH环境变量
  • 支持多平台架构(amd64、arm64等)
  • 使用国内镜像加速下载
  • 自动集成到 bash/zsh shell
  • 轻量级,无复杂依赖

脚本依赖

系统工具依赖

  • wgetcurl:下载 g 工具安装包
  • tar:解压安装包
  • bashzsh:Shell 环境

外部服务依赖

  • 互联网连接:访问 g 工具下载源
  • 下载镜像https://golang.google.cn/dl/(国内镜像)

环境变量依赖

内置变量说明

脚本自动在~/.g/env文件中配置以下环境变量:

1
2
3
export GOROOT="${HOME}/.g/go"
export PATH="${HOME}/.g/bin:${GOROOT}/bin:${GOPATH}/bin:$PATH"
export G_MIRROR=https://golang.google.cn/dl/

这些变量会在安装完成后自动添加到用户的 Shell配置文件(.bashrc.zshrc)中。

参数用法

本脚本无命令行参数,直接执行完整安装流程。

使用方法

快速安装与使用

  1. 下载脚本

    1
    2
    3
    
    bash <(curl -sL sc.eli1.top) g download
    # 或备用地址
    bash <(curl -sL download.elisky.cn) g download
  2. 执行安装

    1
    2
    3
    
    curl -sSL https://.../g.sh | bash
    # 或本地执行
    ./g.sh
  3. 重新加载 Shell配置

    1
    2
    
    source ~/.bashrc  # bash用户
    source ~/.zshrc   # zsh用户
  4. 验证安装

    1
    2
    3
    
    g help          # 查看 g 工具帮助
    go version      # 查看 Go版本
    which go        # 查看 Go路径

g 工具常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 查看可用版本
g list

# 安装指定版本
g install 1.21.5

# 切换版本
g use 1.21.5

# 设置默认版本
g default 1.21.5

# 卸载版本
g uninstall 1.20.0

# 查看已安装版本
g installed

# 清理缓存
g clean

典型使用场景

场景 1:多项目不同 Go版本

1
2
3
4
5
6
7
# 项目 A需要 Go 1.19
cd project-a
g use 1.19.0

# 项目 B需要 Go 1.21
cd project-b
g use 1.21.5

场景 2:测试新版本兼容性

1
2
3
4
5
# 安装最新的 Go beta版进行测试
g install 1.22beta1

# 测试完成后切回稳定版
g use 1.21.5

场景 3:CI/CD环境配置

1
2
3
4
5
6
# GitHub Actions示例
- name: Setup Go
  run: |
    curl -sSL https://.../g.sh | bash
    source ~/.bashrc
    g use 1.21.5

实际应用场景

  • 多版本开发:同时维护需要不同 Go版本的多个项目
  • 版本兼容性测试:测试代码在不同 Go版本下的兼容性
  • 渐进式升级:逐步将项目从旧版本迁移到新版本
  • 团队协作:统一团队开发环境的 Go版本
  • CI/CD流水线:在持续集成中快速切换 Go版本
  • 学习实验:尝试 Go语言的 beta或 rc版本

注意事项

环境变量

  • 加载顺序:确保~/.g/env在 Shell配置文件中正确加载
  • 冲突检测:如已安装官方 Go,需先移除或调整 PATH顺序
  • 永久生效:安装后需要重新加载 Shell配置

目录结构

1
2
3
4
5
~/.g/
├── bin/           # g 工具二进制文件
├── go/            # 当前使用的 Go版本
├── versions/      # 所有已安装的 Go版本
└── env            # 环境变量配置文件

常见问题

问题 1:命令找不到

1
2
3
4
5
# 确保已重新加载 Shell配置
source ~/.bashrc

# 检查 PATH是否包含~/.g/bin
echo $PATH | grep -o "\$HOME/.g/bin"

问题 2:版本切换失败

1
2
3
4
5
6
# 查看已安装版本
g installed

# 重新安装目标版本
g install 1.21.5
g use 1.21.5

问题 3:网络下载慢

1
2
# g 工具已自动使用国内镜像
# 如需自定义,编辑~/.g/env中的G_MIRROR变量

最佳实践

  1. 版本固定:项目根目录创建.go-version文件记录所需版本
  2. 定期清理:使用g clean清理不再使用的版本释放空间
  3. 备份配置:备份~/.g目录便于快速恢复环境
  4. 文档记录:在 README中注明项目所需的 Go版本