Sign up ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

How do I change my default home directory to "C:\Users\khornsby" for every time I open powershell?

I am running Windows 7. Below is info about the state of my environment.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS P:\> cd ~
PS P:\> echo $HOME
PS P:\> HOME="C:\Users\khornsby"
The term 'HOME=C:\Users\khornsby' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.
At line:1 char:25
+ HOME="C:\Users\khornsby" 

PS P:\> Set-Variable HOME "C:\Users\khornsby"
Set-Variable : Cannot overwrite variable HOME because it is read-only or
At line:1 char:13
+ Set-Variable 

PS P:\> dir env:home*

Name                           Value
----                           -----
HOMEPATH                       \
HOMEDRIVE                      P:
HOMESHARE                      \\fileserv\khornsby$

PS P:\>
share|improve this question
How did your format your post? I like the way what you typed is highlighted. – Jay Bazuzi Feb 8 '10 at 16:53
I used the <kbd> tag. – kzh Feb 21 '10 at 12:55

5 Answers 5

up vote 20 down vote accepted

The variable is read only by default, but can be removed with the -Force switch to Remove-Variable. To make your change persistent across sessions, you can make a profile file which is much like a .bashrc (For bash on Linux) except for Powershell.

In your Documents directory (normally C:\Users\YOUR_USERNAME_HERE\documents) for your user account, create a WindowsPowerShell folder (named exactly like that) if one does not already exist. Inside the folder, create a text file called profile.ps1 (ensure it's not profile.ps1.txt).

Inside the file, place anything you want executed when you open Powershell.


Write-Host "Hi John, welcome back!"
Remove-Variable -Force HOME
Set-Variable HOME "C:\Users\khornsby"


alt text

share|improve this answer
You can also have the script run on startup from a shortcut, pointing to: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1 – paradroid Apr 15 '11 at 11:28
I tried this, and it does successfully change the value of $HOME. But "cd ~" still stubbornly switches to the original location. – Weeble Dec 19 '13 at 14:57
@Weeble, see my answer for overriding the ~ shortcut. – ulty4life Jan 3 '14 at 9:59

To address @Weeble 's concern about the ~ shortcut:

$HOMEPATH = "Users\" + $env:username

# Set and force overwrite of the $HOME variable

# Set the "~" shortcut value for the FileSystem provider
(get-psprovider 'FileSystem').Home = $HOMEDRIVE + $HOMEPATH

See here for the distinction between ~ and $HOME

share|improve this answer
it's worth adding cd $HOME at the end, so the shell will start in that location and will be all set for use :) – Eliran Malka Feb 12 at 13:04

Even easier ... open up advanced system settings ...

 C:\> systempropertiesadvanced

Add a new system variable named HOME with the path to your profile

enter image description here

Restart explorer or log out and back in ...

PS C:\> $Env:home 
share|improve this answer
This doesn't do what the question asks. This sets the environment variable $env:HOME, not the Powershell variable $HOME. The Powershell variable $HOME appears to be derived from the environment variables $env:HOMEDRIVE and $env:HOMEPATH at the time the Powershell process starts. It is $HOME that determines the behaviour of "cd ~". – Weeble Dec 19 '13 at 14:50
Sorry, that last statement isn't quite true. $HOME and the behaviour of "cd ~" both appear to match the values of the HOMEDRIVE and HOMEPATH environment variables when the Powershell process starts. Subsequently changing any of these variables/environment variables appears to have no effect on the directory chosen by "cd ~". – Weeble Dec 19 '13 at 15:02
Works fine for me.... I don't know what you're doing differently. – Eddie B Dec 23 '13 at 1:20

You can use help about_profiles to see more details about this. Do not forget to sign your script.

share|improve this answer
help from what application? – kzh Apr 15 '11 at 11:20
@kzh: PowerShell – paradroid Apr 15 '11 at 11:23

To change from within Windows, try the following:

  • Pin PowerShell to the taskbar.

  • Right click the PowerShell icon on the taskbar.

  • Right click 'Windows PowerShell' and select 'Properties'.

  • Within the 'Properties' window, go to the 'Shortcut' tab and change the 'Start in:' field to your desired starting directory. (Example: C:\Users\username\Desktop).

  • Click 'OK'.

  • Launch PowerShell from the taskbar.


    Properties window

share|improve this answer
+1 for the simplest answer. – Christopher Pearson May 20 at 1:12

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.