Cygwin: xterm не запускается у пользователя $ HOME ...?

1683
DevSolar

У меня на Windows установлена ​​рабочая установка Xming / Cygwin. Ну, в основном ...

Я установил свой домашний каталог на / cygdrive / d в / etc / passwd. Когда я запускаю Cygwin Bash Shell (развернутое окно DOS), это работает - $ HOME имеет значение / cygdrive / d, Cygwin находит мой ~ / .bash_profile, все в порядке.

Тем не менее, когда я запускаю xterm, он запускается /cygdrive/c/Documents and Settings/<Username>, и это не источник моего .bash_profile, который чертовски раздражает.

Когда-то во второй половине дня это сработало, а теперь оно сломалось, но я не могу вспомнить, как сломал его.

Помогите?

Изменить: Извините, я должен был быть более точным. Xterm запускается как xterm -ls, т.е. как оболочка входа в систему. Это делает найти глобальный профиль (потому что он работает Баш и устанавливает $ PS1 правильно), но это явно путается около $ HOME (и, следовательно, не работает ~ / .bash_profile, потому что он не может найти его).

Я знаю способ или два, чтобы обойти это, но я хотел бы найти причину этого гадости, а не исправить последствия.

Edit2: Дальнейшее тестирование показало, что это - $ HOME не устанавливается в соответствии с / etc / passwd - происходит только тогда, когда приложение запускается из меню панели задач Xming / Xmingrc . Это также заразно: любой вложенный элемент, начатый с «сломанного» элемента, открывается в неправильном $ HOME. И наоборот: любой bash / xterm, запущенный вне меню Xmingrc (которое открывается в соответствующем $ HOME), может запускать правильные под-термины.

Я немного запутался здесь.

0
Might HOME already be set to `C:\Documents and Settings\` when xterm is invoked? That would override the `/etc/passwd` setting. ak2 14 лет назад 0
@ ak2: не может быть, правда. Когда я запускаю Cygwin Bash Shell (DOS box), HOME устанавливается правильно. И не имеет значения, запускаю ли я xterm из оболочки bash или напрямую через ярлык destop. Но я еще раз проверю это завтра (речь идет о моей офисной рабочей станции). DevSolar 14 лет назад 0

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

0
Gilles

xtermзапускается в текущем каталоге и запускает программу, которую вы велите ему выполнить (предпочитаемая оболочка по умолчанию, но не оболочка входа в систему). Это верно как для Windows, так и для Unix. Если вы хотите иметь оболочку для входа, запустите xterm -e bash --login. Если вы хотите начать с вашего домашнего каталога, установите поле каталога в ярлыке (при условии, что вы запускаете xterm из ярлыка Windows).

Смотрите обновленный вопрос, извините. DevSolar 14 лет назад 0
0
DevSolar

Я нашел ответ, спрятанный в документации Xming. Если в системе не HOMEзадана переменная среды, Xming устанавливает ее в%USERPROFILE% .

Что, в свою очередь, переопределяет /etc/passwdнастройки Cygwin, как указал ak2.

Итак, решение состоит в том, чтобы вручную установить HOME на панели управления.

Или используйте собственный X-сервер Cygwin вместо Xming. (Это пакет xorg-server в файле setup.exe.) ak2 14 лет назад 0