11 ответов:
EDIT: последние версии Cygwin (1.7.34 и выше) см. В разделе этот новый вопрос.
как и ответ sblundy, вы всегда можете редактировать вручную.
но если вы хотите сделать это "официальным" способом, используйте cygwin-specific
mkpasswd. Ниже приведен фрагмент из официальных документов наmkpasswd:например, следующая команда:
пример 3.11. Использование альтернативного домашнего корня
$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwdпоместил бы домашние каталоги локальных пользователей в каталог профилей Windows.
есть куча других очень полезных команд, описанных на Cygwin Utilities страница документации (которая включает
mkpasswd). Использованиеcygpathв приведенном выше примере это еще один из этих инструментов cygwin-specific.пока вы на нем, вы вероятно, также хотите прочитать использование Cygwin эффективно с Windows документация. Есть куча действительно хороших советов.
Я закончил тем, что вышел из всех моих оболочек cygwin и редактировал его вручную в текстовом редакторе. Пока все идет хорошо.
Примечание: не экранируйте пробелы в каталоге "документы и настройки". Запись будет выглядеть как
user:...:/cygdrive/c/Documents and Settings/user:/bin/bashлиния маркируется на
:символ.
самый простой ответ, который я нашел, - это сделать /home мягкой ссылкой на ваш каталог Windows Home / UserProfile
cd / mv home oldhome ln -s "$(cygpath -H)" homeя использовал cygpath, поскольку он получит правильное расположение для домашнего каталога в текущей версии Windows. На моем ящике
cygpath -Hвозвращает/cygdrive/c/Users
для текущего пользователя для меня работало следующее:
- Закрыть Cygwin.
- установите переменную среды пользователя HOME Windows.
- Запуск Cygwin.
- запустите " mkpasswd-c-p "$(cygpath-H)" > /etc/passwd".
- Перезапустить Cygwin.
Я подтвердил, что он работал, запустив ssh-keygen без каких-либо аргументов. После внесения этого изменения приложение теперь по умолчанию сохраняет ключ в /cygdrive/c/Users / user вместо /домашний пользователь.
Я не знаю, требуется ли настройка HOME, но я все равно сделал это в соответствии с инструкциями по настройке TortoiseGit с Cygwin, используя официальную документацию Tortoise для неофициальной поддержки Cygwin здесь. Установка дома в одиночку, хотя этого было недостаточно для ssh-keygen, чтобы распознать изменение домашнего каталога.
кроме того, обратите внимание, что официальная документация Cygwin по этому вопросу может быть найдена здесь.
подтверждено в Windows 7 использование 64-разрядной версии Cygwin v1.7.35.
чтобы избежать проблем, вызванных наличием пробелов в пути к домашнему каталогу, используйте короткую форму каталога профилей Windows-т. е.
/cygdrive/c/DOCUME~1/user.Вы можете сделать это с помощью команды:
mkpasswd -l -p "$(cygpath $(cygpath -dH))" > /etc/passwd
мне нравится синхронизировать мою установку cygwin с пером и другим компьютером, поэтому я ненавижу жесткое кодирование домашнего каталога. Я использую следующую среду.летучая мышь:
echo off SETLOCAL set SHELL=\bin\bash set HOME=%~dp0..\..\doc\unix bin\bash --login -i ENDLOCALSETLOCAL и ENDLOCAL убедитесь, что SHELL и HOME не сбивают существующие переменные env для других программ.
HOME=%~dp0..\..\doc\unixустанавливает HOME в два каталога вверх, в подкаталоге doc/unix. Затем внутрь ....\doc\unix.bashrc следующее, Я включаюPATH="/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin". Я не использовалstart /wait %CD%\bin\bashчтобы начать Баш, потому что я использую Console2, поэтому мне не нужно дополнительное окно cmd.
использование переменной среды Windows: HOME
это работает для меня для постоянного, непереносимую, несетевые решения; т. е. установка переменной окружения Home постоянно в Windows.
Примечание что это не влияет ssh или telnet сессий, которые всегда относятся к / etc / passwd
ref: настройка Cygwin-моя домашняя переменная окружения-это не то, что я хотеть.
CMD
на настоящее пользователей (нужно запустить один раз для каждого пользователя)::
reg add HKCU\Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%на новая потребители:
reg add HKU\.DEFAULT\Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%Примечание: каре ^ до процентов-знаки %
IMPORT REG FILE
импортируйте этот reg-файл (настоящее пользователь):
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Environment] "HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\ 00,45,00,25,00,00,00на новая пользователи:
Windows Registry Editor Version 5.00 [HKU\.DEFAULT\Environment] "HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\ 00,45,00,25,00,00,00REGEDIT
в Regedit, под:
на настоящее пользователь:
HKEY_CURRENT_USER\Environmentна новая потребители:
HKU\.DEFAULT\Environmentсоздать дома как новый Расширяемое Строковое Значение (*REG_EXPAND_SZ*) и поставить в %USERPROFILE%
Оригинал ответ by Кристофер С в другом месте
Cygwin 1.7.34+
для тех, кто использует Cygwin 1.7.34 или выше Cygwin поддерживает настройку извлечения домашнего каталога, оболочки входа и информации gecos в
/etc/nsswitch.conf. Это подробно описано в разделе руководства пользователя Cygwin:если вы ранее создали
/etc/passwdили/etc/groupфайл, который вы хотите удалить и настроить Cygwin с помощью новой модели безопасности Windows для сопоставления POSIX.[[ -f /etc/passwd ]] && mv /etc/passwd /etc/passwd.bak [[ -f /etc/group ]] && mv /etc/group /etc/group.bakThe
/etc/nsswitch.confфайлаdb_home:настройка определяет, как Cygwin выбирает домашний каталог пользователя. Значение по умолчанию дляdb_home:иdb_home: /home/%Uтак, по умолчанию, программа просто устанавливает домашний каталог для
/home/$USERNAME. Вы можете изменить это, хотя указать на любой другой пользовательский путь, который вы хотите. Поддерживаются следующие подстановочные знаки:
%uимя пользователя Cygwin (это нижний регистр u).%Uимя пользователя Windows (это верхний регистр U).%Dдомен Windows в стиле NetBIOS.%Hдомашний каталог Windows в стиле POSIX. Обратите внимание, что дляdb_home:настройка, это имеет смысл только сразу после предшествующей косой чертой, а вdb_home: /%H/cygwin%_С тех пор пробел и символы табуляции используются для разделения схем, пробел в имени файла должен быть задан как%_(это подчеркнуть).%%символ в процентах.вместо пути можно указать одну из четырех предопределенных схем именованных путей.
windowsдомашний каталог пользователя устанавливается в тот же каталог, который используется в качестве домашнего каталога Windows, как правило, что-то вроде%USERPROFILE%илиC:\Users$USERNAME. Конечно, каталог Windows преобразуется в POSIX-стиле Cygwin.
cygwinтолько AD: в домашнем каталоге пользователя задан путь POSIX, указанный в атрибуте cygwinHome из вспомогательного класса cygwinUser. Смотрите также раздел под названием "схема cygwin".
unixтолько AD: в домашнем каталоге пользователя установлен путь POSIX, указанный в атрибуте unixHomeDirectory из posixAccount вспомогательный класс. Смотрите также раздел под названием "схема unix".
descв домашнем каталоге пользователя установлен путь POSIX, указанный в home="..."XML-аналогичная настройка в атрибуте описания пользователя в SAM или AD. Подробное описание см. В разделе "схема desc".следующее сделает домашний каталог пользователя в Cygwin таким же, как используется для Windows home справочник.
db_home: windowsв Cygwin 1.7.33 или ранее
для тех, кто использует Cygwin 1.7.33 или ранее, обновление последняя версия Cygwin и удалить ранее использованные
/etc/passwdи/etc/groupфайлы, см. выше.Else, выполните следующие действия ниже.
во-первых, установите переменную среды Windows для дома, которая указывает на ваш профиль пользователя:
- открыть система на Панель Управления
- на Advanced tab click Переменные Среды (внизу)
- в области пользовательских переменных нажмите кнопку " Создать..."
- для имени переменной введите
HOME- для значения переменной введите
%USERPROFILE%- Нажмите кнопку " ОК " во всех открытых диалоговых окнах, чтобы применить этот новый параметр
теперь мы собираемся обновить программу Cygwin
/etc/passwdфайл с Windows%HOME%переменная, которую мы только что создали. Логины оболочки и удаленные логины черезsshбудет полагаться на/etc/passwdчтобы сообщить им местоположение пользователя$HOMEпуть.в командной строке Cygwin bash введите следующее:
cp /etc/passwd /etc/passwd.bak mkpasswd -l -p $(cygpath -H) > /etc/passwd mkpasswd -d -p $(cygpath -H) >> /etc/passwdThe
-dпереключатель сообщает mkpasswd включить пользователей домена, в то время как-lтолько для вывода пользователей локальной машины. Это важно, если вы используете компьютер на работе, где информация о пользователе получен от контроллера домена Windows.теперь вы также можете сделать то же самое для групп, хотя это не обязательно, если вы не будете использовать компьютер, который является частью домена Windows. Cygwin считывает информацию о группе из баз данных учетных записей Windows, но вы можете добавить
/etc/groupфайл, если ваш компьютер часто отключен от своего контроллера домена.в командной строке Cygwin bash введите следующее:
cp /etc/group /etc/group.bak mkgroup -l > /etc/group mkgroup -d >> /etc/groupтеперь выйдите из Cygwin и запустите его снова. Вы должны обнаружить, что ваш домашний путь указывает на то же место, что и ваш профиль пользователя Windows-т. е.
/cygdrive/c/Users/username
cd /home rm -rf chris ln -s /cygdrive/z chrisЯ не уверен, если это самое безопасное решение, но это решение, которое работает для меня ;)
я отредактировал мой/etc / passwd файл напрямую (убедившись, что больше ничего не будет обращаться к нему) и изменил все ссылки на /home на /Users (в Windows 7). Я обнаружил, что для того, чтобы все работало правильно, мне пришлось удалить все каталоги в каталоге /home (или переместить их в соответствующее другое место). В противном случае, программа будет развиваться раздвоение личности, когда, например, 'Баш -я хотел бы начать в /Home/Пабло, но $дом /пользователи/Пабло и Emacs, как представляется, сделать реверс. Как только я удалил / home / Pablo, все работало нормально.
Comments