36

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 '18 at 7:59
48

Just add

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

to the bottom of your ~/.bashrc file.

  • 1
    where is that ~/.bashrc file in windows installation – Erdem Ece Nov 17 '14 at 12:02
  • 4
    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 '14 at 19:55
  • what if the dafault home directory is a directory where I don't want to put any file. – Arturo Mar 14 '15 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 '18 at 10:12
3

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.

2

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

0

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:
        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)
  • 2
    Please explain. – Roney Michael Jul 10 '13 at 4:11
  • python script use name_script.py c:\path\ – user236976 Jul 10 '13 at 5:25
  • path_bachrc - path to .bashrc – user236976 Jul 10 '13 at 5:25
  • cmd - path to cygwin.bat – user236976 Jul 10 '13 at 5:26
0

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.