Reputation: 2124
I am not even sure I am asking the right question. Let me explain my situation:
This is about Git on Windows 7.
My company sets up the Windows user directory on a network drive, not on the local hard drive (for backup and other purposes beyond the scope of this question). I cannot change that policy.
I CAN have local files outside of that scheme however and that is how my Apache server is set up. Entirely local.
I installed Git. It installs Bash. When I fire up Bash and cd ~
(change to the root directory) I find that it (the Bash root) points to my network user directory. I want it not to do that. I want ~
to be elsewhere on my hard drive. I want it so that when I perform other operations such as installing a certificate, an SSH key, etc. its defaults will not automatically use that network directory.
I have searched in vain everywhere, and all I can find refers to answers that involve aliases, redirection, and the location $HOME points to. But that is not what I want at all.
The question is: Can I change that directory? And if so: How?
UPDATE: So, $HOME is what I need to modify. However I have been unable to find where this mythical $HOME variable is set so I assumed it was a Linux system version of PATH or something. Anyway...
I do have a "profile" file under git/etc
. Here are the contents (notice no $HOME):
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along
# with this software.
# If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# System-wide profile file
# Some resources...
# Customizing Your Shell: http://www.dsl.org/cookbook/cookbook_5.html#SEC69
# Consistent BackSpace and Delete Configuration:
# http://www.ibb.net/~anne/keyboard.html
# The Linux Documentation Project: http://www.tldp.org/
# The Linux Cookbook: http://www.tldp.org/LDP/linuxcookbook/html/
# Greg's Wiki http://mywiki.wooledge.org/
# Setup some default paths. Note that this order will allow user installed
# software to override 'system' software.
# Modifying these default path settings can be done in different ways.
# To learn more about startup files, refer to your shell's man page.
MSYS2_PATH="/usr/local/bin:/usr/bin:/bin"
MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}"
INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}"
MINGW_MOUNT_POINT=
if [ -n "$MSYSTEM" ]
then
case "$MSYSTEM" in
MINGW32)
MINGW_MOUNT_POINT=/mingw32
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
;;
MINGW64)
MINGW_MOUNT_POINT=/mingw64
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
;;
MSYS)
PATH="${MSYS2_PATH}:/opt/bin:${PATH}"
PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig"
;;
*)
PATH="${MSYS2_PATH}:${PATH}"
;;
esac
else
PATH="${MSYS2_PATH}:${PATH}"
fi
MAYBE_FIRST_START=false
SYSCONFDIR="${SYSCONFDIR:=/etc}"
# TMP and TEMP as defined in the Windows environment must be kept
# for windows apps, even if started from msys2. However, leaving
# them set to the default Windows temporary directory or unset
# can have unexpected consequences for msys2 apps, so we define
# our own to match GNU/Linux behaviour.
ORIGINAL_TMP=$TMP
ORIGINAL_TEMP=$TEMP
#unset TMP TEMP
#tmp=$(cygpath -w "$ORIGINAL_TMP" 2> /dev/null)
#temp=$(cygpath -w "$ORIGINAL_TEMP" 2> /dev/null)
#TMP="/tmp"
#TEMP="/tmp"
case "$TMP" in *\\*) TMP="$(cygpath -m "$TMP")";; esac
case "$TEMP" in *\\*) TEMP="$(cygpath -m "$TEMP")";; esac
test -d "$TMPDIR" || test ! -d "$TMP" || {
TMPDIR="$TMP"
export TMPDIR
}
# Define default printer
p='/proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows/Device'
if [ -e "${p}" ] ; then
read -r PRINTER < "${p}"
PRINTER=${PRINTER%%,*}
fi
unset p
print_flags ()
{
(( $1 & 0x0002 )) && echo -n "binary" || echo -n "text"
(( $1 & 0x0010 )) && echo -n ",exec"
(( $1 & 0x0040 )) && echo -n ",cygexec"
(( $1 & 0x0100 )) && echo -n ",notexec"
}
# Shell dependent settings
profile_d ()
{
local file=
for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1); do
[ -e "${file}" ] && . "${file}"
done
if [ -n ${MINGW_MOUNT_POINT} ]; then
for file in $(export LC_COLLATE=C; echo ${MINGW_MOUNT_POINT}/etc/profile.d/*.$1); do
[ -e "${file}" ] && . "${file}"
done
fi
}
for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post); do
[ -e "${postinst}" ] && . "${postinst}"
done
if [ ! "x${BASH_VERSION}" = "x" ]; then
HOSTNAME="$(/usr/bin/hostname)"
profile_d sh
[ -f "/etc/bash.bashrc" ] && . "/etc/bash.bashrc"
elif [ ! "x${KSH_VERSION}" = "x" ]; then
typeset -l HOSTNAME="$(/usr/bin/hostname)"
profile_d sh
PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ')
elif [ ! "x${ZSH_VERSION}" = "x" ]; then
HOSTNAME="$(/usr/bin/hostname)"
profile_d zsh
PS1='(%n@%m)[%h] %~ %% '
elif [ ! "x${POSH_VERSION}" = "x" ]; then
HOSTNAME="$(/usr/bin/hostname)"
PS1="$ "
else
HOSTNAME="$(/usr/bin/hostname)"
profile_d sh
PS1="$ "
fi
if [ -n "$ACLOCAL_PATH" ]
then
export ACLOCAL_PATH
fi
export PATH MANPATH INFOPATH PKG_CONFIG_PATH USER TMP TEMP PRINTER HOSTNAME PS1 SHELL tmp temp
test -n "$TERM" || export TERM=xterm-256color
if [ "$MAYBE_FIRST_START" = "true" ]; then
sh /usr/bin/regen-info.sh
if [ -f "/usr/bin/update-ca-trust" ]
then
sh /usr/bin/update-ca-trust
fi
clear
echo
echo
echo "###################################################################"
echo "# #"
echo "# #"
echo "# C A U T I O N #"
echo "# #"
echo "# This is first start of MSYS2. #"
echo "# You MUST restart shell to apply necessary actions. #"
echo "# #"
echo "# #"
echo "###################################################################"
echo
echo
fi
unset MAYBE_FIRST_START
Upvotes: 192
Views: 228261
Reputation: 52659
Run the following commands inside Git Bash.
Open up your Windows File Explorer inside your Git Bash root directory:
cd /
explorer .
For many people, this will open up inside the C:\Users\my_username\AppData\Local\Programs\Git
directory. For others, it may open up inside C:\Program Files\Git
.
In either case, open up the etc\profile
file located there and add the following to the very top of it:
HOME="/c/Users/$(whoami)"
Save and close the file. Note that this will require admin privileges if it is located inside the C:\Program Files\Git
directory.
Restart all instances of Git Bash to make this take effect.
Confirm that the change took effect:
echo ~
This will output:
/c/Users/my_username
Explanation:
Adding HOME="/c/Users/$(whoami)"
to the top of your Git Bash profile
file makes your HOME
(~
) directory get set to C:\Users\my_username
. Forcing this manually may be necessary if you have a networked or work computer, as otherwise your HOME
directory may point to a network drive, which can:
C:\Users\my_username\.bashrc
file from being sourced properly.From @Paul Wintz's answer here: Git Bash (mintty) is extremely slow on Windows 10 OS:
Per @Alexandre Jobin's comment, Git Bash can be very slow if your
HOME
variable points to a shared network folder.
I like to set the HOME
(~
) directory by setting it at the lowest level possible in the Git Bash system: namely, in the profile
file which Bash sources (imports, or runs) as it opens up, rather than messing with Windows Environment variables or other things.
So, here's how I do it:
HOME
directory in Git BashOpen up the C:\Users\my_username\AppData\Local\Programs\Git\etc\profile
file in a text editor, such as Microsoft VSCode.
Add this to the very top of the file:
# CUSTOM CHANGE: change your home (`~`) dir to `C:\Users\my_username`.
# - Or, set it to whatever else you want here.
HOME="/c/Users/$(whoami)"
# OR (same thing)
# HOME="/c/Users/$USERNAME"
If you want a different HOME
directory than that, customize it to your liking, of course.
Close and re-open all Git Bash terminals to see the changes take effect.
Confirm the change by running echo "$HOME"
and echo ~
in Git Bash, which should now show your new HOME
directory. I see /c/Users/gabriel
, for example.
Done!
C:\Users\my_username\AppData\Local\Programs\Git\etc\profile
file?I opened Git Bash and ran this:
# navigate to what Git Bash has declared the "root" of this filesystem;
# since we are in Windows, I know this is a fake root
cd /
# Now, force Windows Explorer to open up in this directory so I can see
# where it is!
explorer .
Voila! Windows Explorer opened up in C:\Users\gabriel\AppData\Local\Programs\Git
. Now, I know from experience on Linux Ubuntu that one of the core files loaded in Bash is the profile
file located at /etc/profile
. So, I looked in Windows Explorer there and sure enough, there's an etc/
directory there and a profile
file inside it. So, I tried setting the HOME
directory there, and it worked!
Above, I am setting your HOME
directory to be C:\Users\my_username
, where it cleverly uses the whoami
command to get your username, so that everyone can use the same code above regardless of your username, since it will be automatically filled in for you.
Note that since Git Bash is based on the MSYS2 MINGW64 environment, which is a native Windows environment which gives you access to Linux-like tools and things, you can use a variety of path styles in the file above, including the following. I have personally tested each of these to work:
# Unix-style paths (my preference)
HOME="/c/Users/$(whoami)"
# Windows-style paths
# NOTE: You must escape the 2nd backslash in this case with another backslash
# or else it mistakenly escapes the next character (`$`)
HOME="C:\Users\\$(whoami)"
# mixed paths (using both / and \), again escaping the backslash before
# the $ sign
HOME="/c\Users\\$(whoami)"
# OR
HOME="C:/Users\\$(whoami)"
# OR
HOME="C:\Users/$(whoami)"
# funky weirdness paths with extra slashes
HOME="///C:\\Users\\///\\$(whoami)"
# etc.
Beware that multiple forward slashes (/
) in a row is fine. But, backslashes (\
) are escape characters in Unix/Linux, so they must generally come in pairs. Therefore, this does not work: HOME="C:////\\Users\\///\\\$(whoami)"
. The reason is that the \\\$
part near the end is invalid. The first two backslashes there are fine because the first one escapes the second one, but then the \$
part is an escaped dollar sign $
, which breaks the command substitution $(whoami)
.
I prefer to use the Unix-style paths, like this: HOME="/c/Users/$(whoami)"
, wherever possible.
Paths in Git Bash and MSYS2 can be very confusing at times, because the MSYS2 and Git Bash terminals automatically do path conversion from Unix-style paths to Windows-style paths for you. But, sometimes there are nuances with how absolute paths are handled. Take my problem, for instance, where I lost many days of debugging: the question: checking size of mp_limb_t... 0
and configure: error: Oops, mp_limb_t doesn't seem to work
when compiling the Microchip XC32 compiler from source. My answer: The fix: when compiling in an MSYS2 terminal in Windows, absolute #include
paths are not allowed in C and C++!. In short, I had to use relative, not absolute, paths.
Read more about how MSYS2 and Windows vs Unix paths work, here:
HOME
directory and start directory on MSYS2?HOME
directory there, too.
git
commands during software development.gcc
or g++
build commands during software development. So, I recommend installing both systems separately. See the link just above for more detail. Ex: from the MSYS2 UCRT64 (or similar) terminal, you can run gcc build commands like this from my eRCaGuy_hello_world repo: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/blob/master/c/hello_world_extra_basic.c#L24:
gcc -Wall -Wextra -Werror -O3 -std=gnu17 hello_world_extra_basic.c -o bin/a -lm && bin/a
Upvotes: 3
Reputation: 315
Here's a step-by-step guide on how to do it in Windows (it might work in other OSes, too) (please pardon any grammatical/dumb errors (like how I say to use a specific text editor)):
Steps:
git-prompt.sh
, but please make a copy first so you have something to fall back on when you inevitably make a hash out of thisC:\Program Files\Git\etc\profile.d
PS1="$PS1"'\u@\h '
to PS1="$PS1"'YourName '
PS1="$PS1"'$MSYSTEM '
to PS1="$PS1"' '
PS1="$PS1"'\w'
to PS1="$PS1"'c\'
or PS1="$PS1"'d\path\to\some\directory'
Upvotes: 1
Reputation: 1
Based on the answer https://stackoverflow.com/a/32233667/4849403 I would like to supplement it suddenly will be useful.
We have GPOs set up in our company, and therefore, no matter what changes we make, they will be replaced by group policies. HOME folder, for example T:, is configured for all users as a DFS-based network share (most likely), then to create files in the root of the T: drive is not present, and when trying to clone a repository or to create a user .gitconfg, an error occurs. I reconfigured the HOME variable in the git/etc/profile file as follows:
HOME=/c/users/${USERNAME}
And to perform operations, like clone, I use git bash, because in Windows CMD still "HOME=T:/"
Upvotes: 0
Reputation: 2543
The same: $HOME
for git bash
on Windows 10 was set to a network drive (slow responsiveness). I do not have permissions to change system environment variables, Git profile, etc. I could add HOME variable for my user:
git bash
, test ls ~
Upvotes: 3
Reputation: 7656
Instead of modifying the global profile
you could create the .bash_profile
in your default $HOME
directory (e.g. C:\Users\WhateverUser\.bash_profile
) with the following contents:
export HOME="C:\my\projects\dir"
# or export HOME="/c/my/projects/dir"
cd "$HOME" # if you'd like it to be the starting dir of the git shell
Upvotes: 25
Reputation: 25401
I don't understand, why you don't want to set the $HOME
environment variable since that solves exactly what you're asking for.
cd ~
doesn't mean change to the root directory, but change to the user's home directory, which is set by the $HOME
environment variable.
Edit C:\Program Files (x86)\Git\etc\profile
and set $HOME
variable to whatever you want (add it if it's not there). A good place could be for example right after a condition commented by # Set up USER's home directory
. It must be in the MinGW format, for example:
HOME=/c/my/custom/home
Save it, open Git Bash and execute cd ~
. You should be in a directory /c/my/custom/home
now.
Everything that accesses the user's profile should go into this directory instead of your Windows' profile on a network drive.
Note: C:\Program Files (x86)\Git\etc\profile
is shared by all users, so if the machine is used by multiple users, it's a good idea to set the $HOME
dynamically:
HOME=/c/Users/$USERNAME
Set the environment variable HOME
in Windows to whatever directory you want. In this case, you have to set it in Windows path format (with backslashes, e.g. c:\my\custom\home
), Git Bash will load it and convert it to its format.
If you want to change the home directory for all users on your machine, set it as a system environment variable, where you can use for example %USERNAME%
variable so every user will have his own home directory, for example:
HOME=c:\custom\home\%USERNAME%
If you want to change the home directory just for yourself, set it as a user environment variable, so other users won't be affected. In this case, you can simply hard-code the whole path:
HOME=c:\my\custom\home
Upvotes: 200
Reputation: 941
I'd share what I did, which works not only for Git, but MSYS/MinGW as well.
The HOME
environment variable is not normally set for Windows applications, so creating it through Windows did not affect anything else. From the Computer Properties (right-click on Computer - or whatever it is named - in Explorer, and select Properties, or Control Panel -> System and Security -> System), choose Advanced system settings
, then Environment Variables...
and create a new one, HOME
, and assign it wherever you like.
If you can't create new environment variables, the other answer will still work. (I went through the details of how to create environment variables precisely because it's so dificult to find.)
Upvotes: 43
Reputation: 1324288
So,
$HOME
is what I need to modify.However I have been unable to find where this mythical
$HOME
variable is set so I assumed it was a Linux system version of PATH or something.
Git 2.23 (Q3 2019) is quite explicit on how HOME
is set.
See commit e12a955 (04 Jul 2019) by Karsten Blees (kblees
).
(Merged by Junio C Hamano -- gitster
-- in commit fc613d2, 19 Jul 2019)
mingw: initialize HOME on startup
HOME
initialization was historically duplicated in many different places, including/etc/profile
, launch scripts such asgit-bash.vbs
andgitk.cmd
, and (although slightly broken) in thegit-wrapper
.Even unrelated projects such as
GitExtensions
andTortoiseGit
need to implement the same logic to be able to call git directly.Initialize
HOME
in Git's own startup code so that we can eventually retire all the duplicate initialization code.
Now, mingw.c includes the following code:
/* calculate HOME if not set */ if (!getenv("HOME")) { /* * try $HOMEDRIVE$HOMEPATH - the home share may be a network * location, thus also check if the path exists (i.e. is not * disconnected) */ if ((tmp = getenv("HOMEDRIVE"))) { struct strbuf buf = STRBUF_INIT; strbuf_addstr(&buf, tmp); if ((tmp = getenv("HOMEPATH"))) { strbuf_addstr(&buf, tmp); if (is_directory(buf.buf)) setenv("HOME", buf.buf, 1); else tmp = NULL; /* use $USERPROFILE */ } strbuf_release(&buf); } /* use $USERPROFILE if the home share is not available */ if (!tmp && (tmp = getenv("USERPROFILE"))) setenv("HOME", tmp, 1); }
Upvotes: 5
Reputation: 61
I know this is an old question, but it is the top google result for "gitbash homedir windows" so figured I'd add my findings.
No matter what I tried I couldn't get git-bash to start in anywhere but my network drive,(U:) in my case making every operation take 15-20 seconds to respond. (Remote employee on VPN, network drive hosted on the other side of the country)
I tried setting HOME and HOMEDIR variables in windows.
I tried setting HOME and HOMEDIR variables in the git installation'setc/profile file.
I tried editing the "Start in" on the git-bash shortcut to be C:/user/myusername.
"env" command inside the git-bash shell would show correct c:/user/myusername. But git-bash would still start in U:
What ultimately fixed it for me was editing the git-bash shortcut and removing the "--cd-to-home" from the Target line.
I'm on Windows 10 running latest version of Git-for-windows 2.22.0.
Upvotes: 4
Reputation: 6179
I faced exactly the same issue. My home drive mapped to a network drive. Also
However below worked from command line and I was able to add HOME
to environment variables.
rundll32 sysdm.cpl,EditEnvironmentVariables
Upvotes: 1
Reputation: 69339
So, $HOME is what I need to modify. However I have been unable to find where this mythical $HOME variable is set so I assumed it was a Linux system version of PATH or something. Anyway...**
Adding HOME at the top of the profile
file worked.
HOME="c://path/to/custom/root/"
.
#THE FIX WAS ADDING THE FOLLOWING LINE TO THE TOP OF THE PROFILE FILE
HOME="c://path/to/custom/root/"
# below are the original contents ===========
# To the extent possible under law, ..blah blah
# Some resources...
# Customizing Your Shell: http://www.dsl.org/cookbook/cookbook_5.html#SEC69
# Consistent BackSpace and Delete Configuration:
# http://www.ibb.net/~anne/keyboard.html
# The Linux Documentation Project: http://www.tldp.org/
# The Linux Cookbook: http://www.tldp.org/LDP/linuxcookbook/html/
# Greg's Wiki http://mywiki.wooledge.org/
# Setup some default paths. Note that this order will allow user installed
# software to override 'system' software.
# Modifying these default path settings can be done in different ways.
# To learn more about startup files, refer to your shell's man page.
MSYS2_PATH="/usr/local/bin:/usr/bin:/bin"
MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}"
INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}"
MINGW_MOUNT_POINT=
if [ -n "$MSYSTEM" ]
then
case "$MSYSTEM" in
MINGW32)
MINGW_MOUNT_POINT=/mingw32
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
;;
MINGW64)
MINGW_MOUNT_POINT=/mingw64
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
;;
MSYS)
PATH="${MSYS2_PATH}:/opt/bin:${PATH}"
PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig"
;;
*)
PATH="${MSYS2_PATH}:${PATH}"
;;
esac
else
PATH="${MSYS2_PATH}:${PATH}"
fi
MAYBE_FIRST_START=false
SYSCONFDIR="${SYSCONFDIR:=/etc}"
# TMP and TEMP as defined in the Windows environment must be kept
# for windows apps, even if started from msys2. However, leaving
# them set to the default Windows temporary directory or unset
# can have unexpected consequences for msys2 apps, so we define
# our own to match GNU/Linux behaviour.
ORIGINAL_TMP=$TMP
ORIGINAL_TEMP=$TEMP
#unset TMP TEMP
#tmp=$(cygpath -w "$ORIGINAL_TMP" 2> /dev/null)
#temp=$(cygpath -w "$ORIGINAL_TEMP" 2> /dev/null)
#TMP="/tmp"
#TEMP="/tmp"
case "$TMP" in *\\*) TMP="$(cygpath -m "$TMP")";; esac
case "$TEMP" in *\\*) TEMP="$(cygpath -m "$TEMP")";; esac
test -d "$TMPDIR" || test ! -d "$TMP" || {
TMPDIR="$TMP"
export TMPDIR
}
# Define default printer
p='/proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows/Device'
if [ -e "${p}" ] ; then
read -r PRINTER < "${p}"
PRINTER=${PRINTER%%,*}
fi
unset p
print_flags ()
{
(( $1 & 0x0002 )) && echo -n "binary" || echo -n "text"
(( $1 & 0x0010 )) && echo -n ",exec"
(( $1 & 0x0040 )) && echo -n ",cygexec"
(( $1 & 0x0100 )) && echo -n ",notexec"
}
# Shell dependent settings
profile_d ()
{
local file=
for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1); do
[ -e "${file}" ] && . "${file}"
done
if [ -n ${MINGW_MOUNT_POINT} ]; then
for file in $(export LC_COLLATE=C; echo ${MINGW_MOUNT_POINT}/etc/profile.d/*.$1); do
[ -e "${file}" ] && . "${file}"
done
fi
}
for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post); do
[ -e "${postinst}" ] && . "${postinst}"
done
if [ ! "x${BASH_VERSION}" = "x" ]; then
HOSTNAME="$(/usr/bin/hostname)"
profile_d sh
[ -f "/etc/bash.bashrc" ] && . "/etc/bash.bashrc"
elif [ ! "x${KSH_VERSION}" = "x" ]; then
typeset -l HOSTNAME="$(/usr/bin/hostname)"
profile_d sh
PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ')
elif [ ! "x${ZSH_VERSION}" = "x" ]; then
HOSTNAME="$(/usr/bin/hostname)"
profile_d zsh
PS1='(%n@%m)[%h] %~ %% '
elif [ ! "x${POSH_VERSION}" = "x" ]; then
HOSTNAME="$(/usr/bin/hostname)"
PS1="$ "
else
HOSTNAME="$(/usr/bin/hostname)"
profile_d sh
PS1="$ "
fi
if [ -n "$ACLOCAL_PATH" ]
then
export ACLOCAL_PATH
fi
export PATH MANPATH INFOPATH PKG_CONFIG_PATH USER TMP TEMP PRINTER HOSTNAME PS1 SHELL tmp temp
test -n "$TERM" || export TERM=xterm-256color
if [ "$MAYBE_FIRST_START" = "true" ]; then
sh /usr/bin/regen-info.sh
if [ -f "/usr/bin/update-ca-trust" ]
then
sh /usr/bin/update-ca-trust
fi
clear
echo
echo
echo "###################################################################"
echo "# #"
echo "# #"
echo "# C A U T I O N #"
echo "# #"
echo "# This is first start of MSYS2. #"
echo "# You MUST restart shell to apply necessary actions. #"
echo "# #"
echo "# #"
echo "###################################################################"
echo
echo
fi
unset MAYBE_FIRST_START
Upvotes: 5
Reputation: 1061
In my case, all I had to do was add the following User variable on Windows:
Variable name: HOME
Variable value: %USERPROFILE%
How to set a Environment Variable (You can use the User variables for username section if you are not a system administrator)
Upvotes: 80
Reputation: 515
1.Right click to Gitbash shortcut choose Properties
2.Choose "Shortcut" tab
3.Type your starting directory to "Start in" field
4.Remove "--cd-to-home" part from "Target" field
Upvotes: 11
Reputation: 1855
Here you go: Here you go: Create a System Restore Point. Log on under an admin account. Delete the folder C:\SomeUser. Move the folder c:\Users\SomeUser so that it becomes c:\SomeUser. Open the registry editor. Navigate to HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList. Search for "ProfileImagePath" until you find the one that points at c:\Users\SomeUser. Modify it so that it points at c:\SomeUser. Use System Restore in case things go wrong.
Upvotes: -9