---
title: Setting GOPATH
---

The `GOPATH` environment variable specifies the location of your workspace. If no `GOPATH` is set, it is assumed to be `$HOME/go` on Unix systems and `%USERPROFILE%\go` on Windows. If you want to use a custom location as your workspace, you can set the `GOPATH` environment variable. This page explains how to set this variable on various platforms.

- [Unix systems](#unix-systems)
  * [Go 1.13](#go-113)
  * [Bash](#bash)
  * [Zsh](#zsh)
  * [fish](#fish)
- [Windows](#windows)
  * [Go 1.13](#go-113-command-line)
  * [Windows 10 (GUI)](#windows-10-gui)
  * [Windows 10 (command line)](#windows-10-command-line)

## Unix systems

`GOPATH` can be any directory on your system. In Unix examples, we will set it to `$HOME/go` (the default since Go 1.8). Note that `GOPATH` must not be the same path as your Go installation. Another common setup is to set `GOPATH=$HOME`.

### Go 1.13+

```bash
go env -w GOPATH=$HOME/go
```

### Bash

Edit your `~/.bash_profile` to add the following line:
```bash
export GOPATH=$HOME/go
```

Save and exit your editor. Then, source your `~/.bash_profile`.
```bash
source ~/.bash_profile
```

### Zsh

Edit your `~/.zshrc` file to add the following line:

```bash
export GOPATH=$HOME/go
```
Save and exit your editor. Then, source your `~/.zshrc`.
```bash
source ~/.zshrc
```

### fish

```bash
set -x -U GOPATH $HOME/go
```

The `-x` is used to specify that this variable should be exported
and the `-U` makes this a universal variable, available to all sessions and
persistent.

## Windows

Your workspace can be located wherever you like,
but we'll use `C:\go-work` in this example.

__NOTE:__ `GOPATH` must not be the same path as your Go installation.

* Create a folder at `C:\go-work`.
* Right-click on "Start" and click on "Control Panel". Select "System and Security", then click on "System".
* From the menu on the left, select the "Advanced system settings".
* Click the "Environment Variables" button at the bottom.
* Click "New" from the "User variables" section.
* Type `GOPATH` into the "Variable name" field.
* Type `C:\go-work` into the "Variable value" field.
* Click OK.

### Go 1.13+ (command line)
* Open a command prompt (`Win` + `r` then type `cmd`) or a powershell window (`Win` + `i`).
* Type `go env -w GOPATH=c:\go-work`.

### Windows 10 (GUI)
There is a faster way to edit `Environment Variables` via search:
* Left click on "Search" and type `env` or `environment`.
* Select "Edit environment variables for your account".
* ... and follow steps above.

### Windows 10 (command line)
* Open a command prompt (`Win` + `r` then type `cmd`) or a powershell window (`Win` + `i`).
* Type `setx GOPATH %USERPROFILE%\go`. (This will set the `GOPATH` to your `[home folder]\go`, such as `C:\Users\yourusername\go`.)
* Close the command or PowerShell window. (The environment variable is only available for new command or PowerShell windows, not for the current window.)
