Cygwin / etc / passwd не соблюдает / bin / bash

787
WilliamKF

Как я могу заставить Cygwin учитывать файл / etc / passwd и сделать мою оболочку по умолчанию bash вместо sh?

Я предполагаю, что это каким-то образом контролируется Windows XP, поскольку у меня раньше была проблема с разрешениями, и мне пришлось заново создавать файл / etc / passwd после обновления разрешений в Win XP для моего идентификатора пользователя.

0
Как вы вызываете оболочку? Также убедитесь, что переменная SHELL, которая переопределяет параметр / etc / passwd, не установлена. ak2 13 лет назад 0
`SHELL = / bin / bash` и он вызывается emacs через` meta-x shell`, работающий внутри системы x window, запущенной `startx` WilliamKF 13 лет назад 0
Правильно. Откуда вы знаете, что вы используете / bin / sh вместо / bin / bash? ak2 13 лет назад 0
Поскольку это приглашение `sh-4.1 $ ', и если я выполню` bash`, я получу новое приглашение `[xp-pro-sp3 ~] ??? ` WilliamKF 13 лет назад 0
Справедливо. Вы уверены, что ваша запись `/ etc / passwd` правильная? Вы можете использовать `mkpasswd -c`, чтобы напечатать соответствующую запись для текущего пользователя. Еще одна попытка - вызвать один из терминалов Cygwin, например `mintty` или` rxvt`, который вызывает оболочку по умолчанию, если не указано иное. Если вы получите bash там, это станет проблемой emacs. ak2 13 лет назад 0
Я перегенерировал с помощью `mkpasswd -c`, что привело к несколько другому вводу, но с теми же результатами, что и для sh вместо bash. Я также подтвердил, что `mintty` также появляется в sh вместо bash. WilliamKF 13 лет назад 0
Ну, я в тупике. Вероятно, лучше всего сообщить об этом в список рассылки Cygwin с подробной информацией о cygcheck, запрашиваемой по адресу http://cygwin.com/problems.html. Небольшие различия в поле SID (S-1-5-21 -...) могут иметь решающее значение, но я полагаю, что вы заменили запись, о которой идет речь. Можете ли вы на самом деле прочитать `/ etc / passwd` как пользователь, для которого вы пытаетесь запустить свою оболочку, то есть, какие разрешения показывает для него` ls -l`? ak2 13 лет назад 0
Не пытались в последнее время, но в последний раз я пытался, это все еще было проблемой. WilliamKF 12 лет назад 0

1 ответ на вопрос

1
Fran

Попробуйте поместить этот код в ваш ~/.emacsфайл запуска (и перезапустите Emacs):

(setq shell-file-name "bash" explicit-shell-file-name "bash") 

Вы также можете временно переименовать, /bin/shчтобы /bin/sh.holdбыть абсолютно уверенным, вызывает ли Emacs /bin/shили /bin/bash. Имейте в виду, что в некоторых случаях (см. Справочную страницу Bash) Bash будет вести себя как sh в зависимости от того, как он вызывается (например, if argv[0]is "sh").

Похожие вопросы