Table of Contents
WSL starting directory
Starting directory is the directory the shell starts in when it is loaded. When starting directory is not defined, the default value will be set to “%USERPROFILE%” (the path relative to your user settings, for example this may be C:\Users\<your username>).
Default behavior: When the startingDirectory value is not specified, you will get different results depending on where you launch Terminal:
- If you run Windows Terminal from the Start menu: %WINDIR%\System32
- If you run wt.exe from the Start menu: %WINDIR%\System32
- If you run wt.exe from Win+R: %USERPROFILE%
- If you run wt.exe from the explorer address bar: whatever folder you were looking at.
Start WSL Instance In The User’s Home Directory
For example, WSL starts in the home folder of the current logon Windows user.
To automatically starts the shell in the user’s home directory. From PowerShell or CMD run wsl ~ command instead of wsl only. Run wsl without any distribution name will start the default instance.
wsl ~
As you can see in the below screenshot, when using the wsl ~ command, the WSL instance starts in the user’s home directory automatically without navigate to it manually with cd ~ in bash.
If you’ve multiple instances, for example, the below command for Debian:
wsl ~ -d debian
Using the environment variable
Alternatively, if you don’t want to type wsl ~ command every time you start an WSL instance. You can use the environment variables in the profile.
1. Start an WSL instance, the shell will start in /mnt/c/Users/username
2. In the shell, navigate to the user’s home directory using cd ~ command.
cd ~
3. Run the below command to add cd ~ to the .bashrc file. Aliases and functions are put into .bashrc to ensure that these are loaded every time a shell is launched.
echo cd ~ >> ~/.bashrc
4. Exit the shell → Terminate the instance then open it again to verify it works.
Not a reader? Watch this related video tutorial: