Я узнал, что после того, как вопрос был опубликован здесь, новый ответ был опубликован на
https://stackoverflow.com/questions/21905380/how-do-i-get-cygwin-xterm-to-use-bash-and-not-sh
это ссылка, приведенная в самом вопросе. Этот последний ответ помог мне решить проблему. Вот и весь список вещей, которые могут быть важны:
Для подлинных систем Linux можно использовать «chsh -s» для установки оболочки по умолчанию. Однако команда "chsh" просто отсутствует в Cygwin.
Чтобы убедиться, что bash является оболочкой по умолчанию для xterm под Cygwin, вам нужно (как минимум) сделать следующее:
1) убедитесь, что Bash установлен (просто проверьте, "какой Bash")
2) убедитесь, что bash указан в /etc /shells (этот файл следует создать, если он отсутствует, см. Ссылку выше, чтобы найти пример для /etc /shells)
3) убедитесь, что в /etc /passwd оболочка по умолчанию для данного пользователя установлена правильно, включая путь, например, /bin /bash
Однако все это не помогло мне. Это только последний бит, который действительно заставил xterm начать с bash по умолчанию:
4) файл /bin /bash (при необходимости измените правильный путь) должен быть установлен в chmod 755 вместо 700. Это означает, что все пользователи должны иметь возможность выполнить его. Обратите внимание, что разрешение chmod в Cygwin не обязательно является производным от разрешений Windows, которые вы установили в папке cygwin под windows.
Поэтому я просто набрал "chmod 755 /bin /bash", и он сделал то, что должен!
Похоже, что во время одного из последних обновлений Cygwin изменились разрешения chmod для /bin /bash, что привело к странному поведению, описанному выше.
Очень надеюсь, что кто-нибудь поможет со всем этим, поэтому моя боль была не напрасной.
PS, чтобы проверить, какую оболочку вы используете в данный момент, используйте «echo $ SHELL» или «ps -p $$». Если результаты отличаются, второй следует доверять. Например, при запуске новой оболочки в терминале $ SHELL может не измениться, но вывод «ps -p $$» изменится