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

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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .