
я виделэтотно у меня это не работает. Я не использую версию 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.