# Ubuntu: How to Set the GOPATH Environment Variable

> Set the GOPATH environment variable in Ubuntu and other Linux systems using shell exports or go env, plus guidance on migrating to Go Modules

**URL:** https://sentry.io/answers/setting-the-gopath-environment-variable-in-ubuntu/

---

## The Problem

You don't know how to set the `GOPATH` environment variable in an Ubuntu environment (or in most other Linux environments).

## The Solution

There are different ways to set the `GOPATH` variable depending on your version of Go and whether you're trying to `go install` a binary or `go install` a package.

From [Go 1.8](https://go.dev/wiki/SettingGOPATH#unix-systems) onwards, the default `GOPATH` is `$HOME/go` on Unix systems.

If you're using an old version of Go to `go get` a package, upgrade your Go version to 1.11 or later and use [Go Modules](https://go.dev/blog/using-go-modules).

If you're using an even earlier version of Go or want to use a custom `GOPATH`, export the `GOPATH` environment variable in your shell session:

```sh
export GOPATH=/user/me/exampledirectory
```

If you're using Go version 1.13 or above, set the environment using Go itself:

```sh
go env -w GOPATH=/user/me/exampledirectory
```

If you want the change to persist beyond the current session, you need to modify your shell startup file.

If you're using Bash or Zsh, you'll need to add the following to your `~/.bash_profile` or `~/.zshrc` file:

```sh
export GOPATH=/user/me/exampledirectory
```

Save and exit your editor.

Load the file by running one of the following commands:

```sh
source ~/.bash_profile # For Bash.
source ~/.zshrc        # For Zsh.
```

### Further Reading

- The [Go Wiki: Setting GOPATH](https://go.dev/wiki/SettingGOPATH) page
- The [Using Go Modules](https://go.dev/blog/using-go-modules) blog post

---

*Source: [sentry.io/answers/setting-the-gopath-environment-variable-in-ubuntu/](https://sentry.io/answers/setting-the-gopath-environment-variable-in-ubuntu/)*
