133

When I punch from the windows gitbash command line:

set $HOME = c

and do :

echo $HOME

It does not set it to c? How can I change/set the value of an environment variable?

4 Answers 4

163

A normal variable is set by simply assigning it a value; note that no whitespace is allowed around the =:

HOME=c

An environment variable is a regular variable that has been marked for export to the environment.

export HOME
HOME=c

You can combine the assignment with the export statement.

export HOME=c
Sign up to request clarification or add additional context in comments.

4 Comments

So what does OP's set do?
Assuming a "normal" value of $HOME (such that the unquoted expansion results in a single word), it sets the first three positional parameters to the values of of $HOME, =, and c, respectively. For example, set a b c; echo "$2" would output b.
Also true for bash in general.
Worth to note that this variable will NOT be Windows Environment Variables. I mean, opening Windows Settings -> System -> Advanced System Settings -> Environment Variables you cannot find them nor for User neither for System. To achieve this goal use `` setx My_VARIABLE "my value" ``
68

If you want to set environment variables permanently in Git-Bash, you have two options:

  1. Set a regular Windows environment variable. Git-bash gets all existing Windows environment variables at startup.

  2. Set up environment variables in .bash_profile file.

.bash_profile is by default located in a user home folder, like C:\users\userName\git-home\.bash_profile. You can change the path to the bash home folder by setting HOME Windows environment variable.

.bash_profile file uses the regular Bash syntax and commands

# Export a variable in .bash_profile
export DIR=c:\dir
# Nix path style works too
export DIR=/c/dir

# And don't forget to add quotes if a variable contains whitespaces
export ANOTHER_DIR="c:\some dir"

Read more information about Bash configurations files.

4 Comments

You may not have answered the OP question but you have certainly helped me out with my question. I was trying to override the PERL5LIB environment variable for Git Bash on Windows and this allowed me to do it easily.
You might want to edit #1 to mention it's the same command as in a Windows shell except with different syntax (setx foo bar versus setx foo=bar). I misread what you were saying with that answer since you didn't mention setx.
For some reason, Git Bash is ignoring my Windows' HOME environment variable. Meaning, it's not using my gitconfig but using its own inside Git/etc.
but you couldn't set HOME or HOMEDRIVE via this method, correct? since you already known .bash_profile is under HOME.
8

Creating a .bashrc file in your home directory also works. That way you don't have to copy your .bash_profile every time you install a new version of git bash.

Comments

2
  1. Temporarily change the environment variable

export JAVA_HOME="C:\Program Files\Java\jdk-11"

Verify it's been changed

mvn -version

NOTE: Don't verify this via

java -version

  1. Permenantly change the environment variable

setx JAVA_HOME "C:\Program Files\Java\jdk-17"

NOTE: necessary to restart Git Bash first

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.