Как изменить каталог запуска по умолчанию в Cygwin?


36

Всякий раз, когда я запускаю cygwin, мне нужно переходить на несколько уровней к единственному каталогу, который мне нужен при использовании cygwin.

Как я могу заставить Cygwin запускаться в этом конкретном каталоге по умолчанию ... т.е. каждый раз, когда я запускаю Cygwin, он уже будет в этом каталоге?

Я нашел некоторые вещи, которые могут быть или близки, но я их не понимаю, и я действительно не вижу результатов, когда я ищу эти (n00b) термины. Любая помощь будет отличной!


Небольшой совет: при использовании cygwin вам не нужно несколько раз использовать cd - вы можете сделать это с помощью одной команды (предложения по-прежнему будут появляться для подкаталогов).
линия

Ответы:


48

Просто добавь

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

в конец вашего файла ~ / .bashrc.


1
где этот файл ~ / .bashrc в установке Windows
Erdem Ece

4
Это зависит от того, как вы установили Cygwin, но путь Windows к вашему домашнему каталогу Cygwin, как правило C:\cygwin\home\%USERNAME%, соответствует пути Windows ~/.bashrc C:\cygwin\home\%USERNAME%\.bashrc.
garyjohn

Что делать, если домашний каталог dafault - это каталог, куда я не хочу помещать какие-либо файлы?
Артуро

@Arturo Я думаю, что вы запутались в двух вещах - домашний каталог пользователя и домашний каталог Cygwin. Файл .bashrc в любом случае есть, если вы устанавливаете Cygwin.
Линия

3

Определить "начать Cygwin"? Вы можете запускать серверы Cygwin при включении компьютера, но я предполагаю, что вы не это имеете в виду.

Если вы имеете в виду, что попадаете в определенную папку каждый раз, когда вы открываете приглашение оболочки, вы можете поместить это в ваш $ HOME / .bashrc

Отредактируйте ваш $ HOME / .bashrc с помощью редактора cygwin (тот, который использует окончания строки UNIX), добавьте строку

cd /whatever/directory/you/want

Если вы постоянно заходите в этот каталог, возможно, вам лучше создать псевдоним.

В вашем $ HOME / .bashrc положите:

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

Называй это как хочешь; Я просто использовал GT для «перехода туда» и пишу в верхнем регистре, потому что это облегчает отделение от встроенных команд, которые никогда не пишутся с большой буквы.



0

скрипт на питоне

!! перед использованием добавьте .bashrc любую строку в конец !!

использование name_script.py c:\path

path_bachrc - путь к .bashrc

cmd - путь к 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
Пожалуйста, объясни.
Рони Майкл

сценарий python использует name_script.py c: \ path \
user236976

path_bachrc - путь к .bashrc
user236976

cmd - путь к cygwin.bat
user236976

0

Это решение не требует редактирования .bashrc:

Ниже приведен фрагмент официальных документов mkpasswd:

Например, эта команда:

Пример 3.11. Использование альтернативного домашнего рута

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

поместит домашние каталоги локальных пользователей в каталог «Профили» Windows.

(ответ скопирован с аналогичного вопроса на stackoverflow, потому что мне больше нравится это решение, чем здесь)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.