6

В рамках установки EGit мне пришлось установить переменную среды HOME в Windows. Это вызвало проблему, из-за которой cygwin считает переменную среды HOME в Windows более важной, чем значение в /etc /passwd. В результате cygwin считает, что мой каталог HOME в cygwin переместился из своего предыдущего расположения в папку моего профиля пользователя Windows. Я бы предпочел хранить файлы cygwin отдельно, так как папка моего профиля пользователя уже достаточно загромождена, но, похоже, это невозможно.

Есть ли способ заставить Cygwin использовать значение из /etc /passwd вместо переменной окружения HOME?

3 ответа3

6

Отредактируйте /etc /profile и измените строки

# Set the user id
USER="$(id -un)"

в

# Set the user id
USER="$(id -un)"

# Set user home dir
HOME=$(eval echo "~$USER")

Это заставляет Cygwin всегда использовать значение из /etc /passwd. Это лучше, чем использование Cygwin.bat, потому что это относится ко всем оболочкам входа в систему, независимо от того, как они появляются.

3

Файл cygwin.bat, обычно используемый для запуска оболочки Cygwin, может быть изменен, чтобы делать с HOME все, что вам нужно. Вы можете попробовать:

set HOME=

Это должно, основываясь на документации и опыте, на самом деле сбрасывать% HOME%, чтобы cygwin не видел его. Поскольку cygwin по умолчанию установит $ HOME в качестве значения в /etc /passwd (если HOME не установлен в родительском процессе, от которого он наследует среду), вы должны получить желаемый результат.

Обратите внимание, что я заявляю, что

set HOME=

фактически удаляет HOME из установленных переменных env; нет, как и следовало ожидать, альтернативный результат установки HOME в нулевую строку (но оставляя его в окружении).

1

Вот несколько вещей, которые вы можете попробовать:

  1. Отредактируйте cygwin.bat и set HOME= на любой нужный вам каталог .

  2. Отредактируйте /etc /profile (C:\cygwin\etc\profile) и измените cd "${HOME}" на любой каталог, который вы хотите.

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