Whenever I start cygwin, I need to cd several levels down to the only directory that I care about when using cygwin.

How can I get cygwin to start in this particular directory by default...i.e., each time I start Cygwin it will be in that directory already?

I found some things that may be it, or close, but I don't understand them, and there's really no results when I search for these (n00b) terms. Any help would be great!

  • Just a little tip: using cygwin you don't need to cd several times - you can do it with one command (suggestions will still appear for subdirectories).
    – Line
    Jan 4, 2018 at 7:59

5 Answers 5


Just add

cd /path/to/directory/you/care/about

to the bottom of your ~/.bashrc file.

  • 2
    where is that ~/.bashrc file in windows installation
    – Erdem Ece
    Nov 17, 2014 at 12:02
  • 5
    It depends on how you installed Cygwin, but the Windows path to your Cygwin home directory is usually C:\cygwin\home\%USERNAME%, which would make the Windows path to ~/.bashrc C:\cygwin\home\%USERNAME%\.bashrc.
    – garyjohn
    Nov 17, 2014 at 19:55
  • what if the dafault home directory is a directory where I don't want to put any file.
    – user428047
    Mar 14, 2015 at 15:56
  • @Arturo I think you mess up two things - your user home directory and Cygwin home directory. .bashrc file is anyway there if you install Cygwin.
    – Line
    Jan 13, 2018 at 10:12
  • currently bashrc file there is in C:\cygwin64\home\my_user_name folder
    – CodeToLife
    Mar 10, 2021 at 14:24

in the last line of your .bash_profile (or .profile), put cd your/dirctory/here


Define "start cygwin"? You can run cygwin servers when you power your machine up, but I'm assuming that's not what you mean.

If you mean, end up in a specific folder every time you open a shell prompt, you can put that in your $HOME/.bashrc

Edit your $HOME/.bashrc using a cygwin editor (one that uses UNIX line endings), add a line

cd /whatever/directory/you/want

If you're constantly going to this directory, you're probably better off making an alias as well.

In your $HOME/.bashrc put:

alias GT='cd /whatever/directory/you/want'

Call it whatever you want; I just used GT for "go there", and I uppercase because it makes it easy to separate from builtin commands, which are never capitalized.


python script

!!before use add .bashrc any string to the end!!

use name_script.py c:\path

path_bachrc - path to .bashrc

cmd - path to cygwin.bat

#   gangelXXX@gmail.com                         #
import argparse
import subprocess
import os

path_bachrc = 'c:/PP/cygwin/home/adm/.bashrc'
cmd = 'c:\PP\cygwin\Cygwin.bat'

def delEndLineFromFile(filename):
    with open(filename, 'r') as f:
        aList = f.readlines()

    bList = aList[0:-1]

    with open(filename, 'w') as fd:

parser = argparse.ArgumentParser()
parser.add_argument("newPath", type=str, help="New path in .bachrc cygwin")
args = parser.parse_args();


p = args.newPath;
pNew = 'cd /cygdrive/' + p[:1] + p[2:].replace('\\', '/')

with open(path_bachrc, 'a') as f:

PIPE = subprocess.PIPE
p = subprocess.Popen(cmd, shell = True)
  • 2
    Please explain. Jul 10, 2013 at 4:11
  • python script use name_script.py c:\path\
    – user236976
    Jul 10, 2013 at 5:25
  • path_bachrc - path to .bashrc
    – user236976
    Jul 10, 2013 at 5:25
  • cmd - path to cygwin.bat
    – user236976
    Jul 10, 2013 at 5:26

This solution doesn't require editing .bashrc:

Below is a snippet from the official docs on mkpasswd :

For example, this command:

Example 3.11. Using an alternate home root

$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwd

would put local users home directories in the Windows 'Profiles' directory.

(answered copied from similar question on stackoverflow because I like this solution more that those here)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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