ego
Execute distributed applications and manage resources
TLDR
Synchronize the Portage tree
Update the bootloader configuration
Read a Funtoo wiki page by name
Print current profile
Enable/Disable mix-ins
Query Funtoo bugs, related to a specified package
SYNOPSIS
ego <command> [<args>]
PARAMETERS
version
Display the current active Go version
list
List installed Go versions (--remote to show available online)
list-remote
List all available Go versions online
install <version>
Download and install specified Go version
uninstall <version>
Remove specified Go version
use <version>
Set local/project-specific Go version
global <version>
Set system-wide default Go version
local <version>
Create .ego_version file for project-local version
which
Show path to current Go binary
root
Print ego installation root directory
--help
Show usage help
--version
Show ego tool version
DESCRIPTION
Ego is a lightweight command-line tool designed to manage multiple versions of the Go programming language on Unix-like systems, including Linux. It allows developers to install, switch between, and use different Go versions seamlessly without conflicts, similar to tools like pyenv for Python or rbenv for Ruby.
Ego works by shimming the go command and modifying the PATH environment variable to point to the active Go installation. It supports listing available versions (both local and remote), installing specific versions from official Go downloads, setting global or per-project versions, and querying the current version. This is particularly useful in development environments where projects require specific Go versions, preventing version mismatches.
Installation typically involves cloning the repository from GitHub and adding it to your PATH, or using package managers like Homebrew on macOS (though focused on Linux here). Once set up, ego integrates transparently, making Go version management effortless. It fetches binaries directly from golang.org, ensuring authenticity and ease of use. Limitations include no support for building Go from source; it only handles pre-built distributions.
CAVEATS
Ego only manages pre-built Go binaries; no source builds. Requires write access to ~/.ego. Shell reinitialization needed after install. Not compatible with GVM or goenv.
INSTALLATION
curl https://raw.githubusercontent.com/syohex/ego/master/get-ego.sh | sh
echo 'export PATH="$HOME/.ego/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
EXAMPLE USAGE
ego install 1.21.0
ego use 1.21.0
go version # Shows 1.21.0
HISTORY
Developed by Daniel Theophanes in 2013 as a minimal alternative to GVM. Maintained on GitHub with sporadic updates; last major activity around 2018. Widely used in early Go adoption for its simplicity.


