Выбор оболочки для 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 $$" изменится