Выбор оболочки для xterm в Cygwin

В основном мой вопрос тесно связан с этим:

https://stackoverflow.com/questions/21905380/how-do-i-get-cygwin-xterm-to-use-bash-and-not-sh

Я также хочу установить bash в качестве оболочки по умолчанию для xterm (я работаю над Cygwin). Некоторое время назад bash был по умолчанию для xterm, недавно он почему-то изменился.

Теперь у меня есть файл / etc / shells с содержимым, приведенным в ссылке выше. Это не помогло.

Самый простой способ воспроизвести поведение, которым я недоволен, - это просто набрать "xterm" в оболочке (скажем, bash). Новый терминал начинается с sh, а не bash.

Я знаю, что можно сделать 'xterm -e bash', но это не совсем удовлетворительно, потому что этот флаг нужно давать каждый раз.

Надеюсь, кто-нибудь может помочь.

1 ответ

Решение

Я узнал, что после того, как вопрос был опубликован здесь, новый ответ был опубликован на

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 $$" изменится

Другие вопросы по тегам