2017-02-12 9 views
1

У меня есть и Bash на Ubuntu на Windows, и Cygwin Баш установлен на моей машине, и оба настроены иметь один и тот же ~ папку (через /mnt/c/source и /cygdrive/c/source соответственно).Баш изменение директории при запуске

Когда я запускаю подсказку bash Ubuntu через bash --login -i (или просто bash --login) из любого каталога, я получаю приглашение из этого каталога; однако, когда я запускаю bash Cygwin через ту же команду, текущий каталог переопределяется, и приглашение всегда находится в ~. См. Скриншоты для простого примера.

Мои пользовательские каталоги .bashrc и .bash_profile, конечно же, совпадают, так как оба используют один и тот же каталог пользователей. Я просмотрел файл /etc/bash.bashrc Cygwin и, похоже, ничего не изменилось, чтобы изменить текущий каталог, и нет никаких других соответствующих файлов в /etc.

Что может привести к изменению директории Cygwin's?

ubuntu bash screenshot

cygwin bash screenshot

+0

Можете ли вы сравнить результат работы bashes с добавлением '-x'? – choroba

+0

@choroba: Я не знал об этом флаге. Вывод - это тысячи строк длиной и совершенно разные, потому что у меня есть разные пакеты, установленные в Cygwin и Ubuntu (например, разные версии bash-завершения). Но, в частности, в выводе нет 'cd',' cwd', ​​'pwd' или' pushd'. – configurator

+0

@choroba: Я нашел его благодаря вам; Через несколько минут я отправлю ответ. – configurator

ответ

0

вы просто добавить команду "CD/dir_you_want" в нижней части ~/.bashrc в Cygwin

+0

Я ценю помощь, но это точно противоположно тому, что я хочу; Я не хочу менять каталог при загрузке bash, я хочу, чтобы каталог bash был загружен, так что я могу использовать инструменты, которые открывают терминал bash в правильном каталоге. – configurator

0

Я понял это, так что в случае, если кто-то работает в том же выпуске:

Существует один файл, на который я не обращался, потому что я не знал, что он существует, /etc/profile. В Cygwin по умолчанию он имеет следующий раздел:

# 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 

Отключение, которое решает проблему, конечно.

 Смежные вопросы

  • Нет связанных вопросов^_^