РЕДАКТИРОВАТЬ

РЕДАКТИРОВАТЬ

я виделэтотно у меня это не работает. Я не использую версию bash от Git, а ту, что идет с cygwin, так что это может быть частью проблемы. Вот как я настроил вкладку в Console2:

Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%

Вот моя запись в реестре:

Directory
    shell
        Console2
            Open Console2 Here
            command
                "C:\Console2\Console.exe" -d "%1"

bash всегда запускается в моем домашнем каталоге, а не в том, на который я нажимаю, затем мне приходится cd /cygdrive/d/code... и т. д. Я пробовал удалить значение в поле «Startup dir», изменив его на %1, %1%, но безуспешно.

Я тоже попробовалэто решениено у меня это тоже не сработало:

Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l

Реестр:

Directory
    shell
        Console2
            Open Console2 Here
            command
                "C:\Console2\Console.exe" -d "%V"

Решения выше работают для версий bash.exe и sh.exe, которые включены в Git, но не для версий, которые включены в cygwin по какой-то причине. Все еще ищу причину этого.

РЕДАКТИРОВАТЬ

Я выбрал ответ ниже, но я думаю, что второе решение выше сработало бы, если бы я создал файл .profile в правильной папке. Я все время пытался создать его в своем обычном домашнем каталоге вместо домашнего каталога, используемого cygwin, поэтому он никогда не выполнял скрипт. Это привело меня к мысли, что файл .profile был ненужным. Выбранный мной ответ (спасибо, Хью!) четко объясняет, как каждый из скриптов (.bash_profile, .bash_login, .profile и .bashrc) используется bash, что помогло мне понять, что я помещаю их не в то место.

решение1

Изруководство,

Когда Bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, он сначала считывает и выполняет команды из файла /etc/profile, если такой файл существует.

/etc/profileпо умолчанию содержит следующий код:

# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
  unset CHERE_INVOKING
else
  cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi

Поэтому одним из решений было бы создание пакетного файла Windows, который устанавливает переменную окружения CHERE_INVOKINGперед запуском bash. Это не очень аккуратно.

Следующий,

После прочтения этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, а затем считывает и выполняет команды из первого существующего и доступного для чтения файла.

Эти скрипты профиля по умолчанию выполняют ваш ~/.bashrcскрипт, если он существует. Помещаю cd -в конец своих .bashrcработ для себя (с последним Console2 и Cygwin bash):

echo 'cd -' >> ~/.bashrc

Кстати, я вызываю Console2 ( Console.exe) без аргументов — Windows Explorer гарантирует, что он запустится в каталоге, который я щелкнула правой кнопкой мыши. Я использую XP, но сомневаюсь, что MS изменит это поведение в более поздних версиях Windows. Я также оставляю опцию "startup dir" пустой для вкладки Bash.

решение2

Кажется, вы не создали ~/.profileследующее:

cd -

https://superuser.com/a/387273/139371

Связанный контент