Настройте Console2 для открытия bash в текущей папке
Я видел это, но это не работает для меня. Я не использую версию Gash от 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, что помогло мне понять, что я поставил их не в том месте.
2 ответа
Из руководства,
Когда 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.
Кажется, вы еще не создали ~/.profile
со следующим:
cd -