How to change default directory in Windows Subsystem for Linux
You should only change the startingDirectory
for WSL (Ubuntu in this case) terminal sessions.
- Open
settings.json
via CTRL+SHIFT+, - Make sure you are modifying
startingDirectory
underprofiles/list/name: "Ubuntu"
Example below (the slashes need to be escaped):
....
{
"guid": "{2c4de342-xxx-xxx-xxx-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "\\\\wsl$\\Ubuntu\\home\\windows_username_in_lower_case"
},
....
Documentation about startingDirectory
including default values and expected values.
Inside settings.json
you will also find an explanation of the json schema which is here
If you need to know how or where to edit Windows Terminal settings/preferences: https://docs.microsoft.com/en-us/windows/terminal/get-started
How to default to other directory instead of home directory
Just write that line to a file "cd.sh", then do this from your shell prompt:
. ./cd.sh
Or you can create an alias or function in your $HOME/.bashrc
file:
foo() { cd /d/work_space_for_my_company/project/code_source ; }
If the directory name includes spaces or other shell metacharacters, you'll need quotation marks; it won't hurt to add them even if they're not necessary:
foo() { cd "/d/Work Space/project/code_source" ; }
(Note that I've omitted the ../../..
; you don't need it.)
EDIT: If you add a line
foo
to your .bashrc
after the function definition, your shell will start in that directory. Or you can just use the cd
command directly in your .bashrc
if you aren't going to need to use the function later.
(The name foo
is just an example; you should pick a more meaningful name.)
Change the location of the ~ directory in a Windows install of Git Bash
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.
Quick'n'dirty solution
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
Cleaner solution
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
Related Topics
Get Yesterday's Date in Bash on Linux, Dst-Safe
Linux: Where Are Environment Variables Stored
Pack Shared Libraries into the Elf
What Is Path //, How Is It Different from /
Sending Udp Packets from the Linux Kernel
How to Set Memory Limit for Oom Killer for Chrome
Pthread Mutex Lock Unlock by Different Threads
Remove a Symlink to a Directory
Self Modifying Code Always Segmentation Faults on Linux
How to Automatically Add User Account and Password with a Bash Script
Extract Lines Between Two Patterns from a File
How to Use Xargs to Copy Files That Have Spaces and Quotes in Their Names
How Does Bash Deal with Nested Quotes
Centos 64 Bit Bad Elf Interpreter
How to Remove the Bom from a Utf-8 File
Run Shell Command in Jenkins as Root User
What's the Memory Before 0X08048000 Used for in 32 Bit MAChine