How do I change the default startup directory in Cygwin?

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!

1

5 Answers

Just add

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

to the bottom of your ~/.bashrc file.

5

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

#***********************************************#
# #
#***********************************************#
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: fd.writelines(bList)
parser = argparse.ArgumentParser()
parser.add_argument("newPath", type=str, help="New path in .bachrc cygwin")
args = parser.parse_args();
delEndLineFromFile(path_bachrc);
p = args.newPath;
pNew = 'cd /cygdrive/' + p[:1] + p[2:].replace('\\', '/')
print(pNew)
with open(path_bachrc, 'a') as f: f.write(pNew)
PIPE = subprocess.PIPE
p = subprocess.Popen(cmd, shell = True)
4

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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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

You Might Also Like