7

I am trying to add my project directory to GOPATH, in linux I can do

export GOPATH=$HOME/mygo in ~/.bashrc

what is the equivalence in powershell

yngccc
  • 5,594
  • 2
  • 23
  • 33

2 Answers2

12

This should follow the way you set any Environment variable with Powershell (as described in this article):

If you want it permanent (ie will apply for any future shell):

[Environment]::SetEnvironmentVariable("GOPATH", "C:\Your\Path", "User")

One thing to watch out for: when we used SetEnvironmentVariable to create a new user- or machine-level environment variable that variable didn’t always show up when we ran this command in Windows PowerShell:

Get-ChildItem Env:

Or at least it didn’t show up until we restarted PowerShell. (Or started up a new instance of PowerShell.)
However, we could retrieve the value of the new variable at any time by using this command:

[Environment]::GetEnvironmentVariable("GOPATH","User")

If you want it for just the current shell, as mentioned in cmotley's answer and detailed in the same article:

$env:GOPATH = "C:\Your\Path"

As Jaykul comments, setting that line in your %UserProfile%\My Documents\WindowsPowerShell\profile.ps1 is the equivalent of an export in ~\.bashrc:
See "Windows PowerShell Profiles".
(There are actually 4 profiles, the one profile mentioned applies only to the current user, but affects all shells)

Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
  • Because you're bypassing the drive when you set the item, why would you do that? You can `Set-Content Env:GOPATH $Home\mygo` or use the short variable notation for path access and do: `$Env:GOPATH = "$HOME\mygo"` as @cmotley suggested. – Jaykul Sep 25 '12 at 17:21
7

Alternatively, you could do this:

$env:GOPATH = "$HOME\mygo"

  • 1
    Doing that in your ~\Documents\WindowsPowerShell\Profile.ps1 is the equivalent of an export in ~\.bashrc – Jaykul Sep 25 '12 at 17:23