Dla tych, którzy używają Cygwin 1.7.34 lub nowszego, użyj metod wyjaśnionych w innych postach, ale nie zapomnij usunąć znaku # przed usunięciem db_home:cudzysłowu i sprawić, by działał.
Maieul
Odpowiedzi:
180
Począwszy od Cygwin 1.7.34 , zalecanym sposobem jest dodanie niestandardowego db_homeustawienia do /etc/nsswitch.conf. Powszechnym życzeniem podczas robienia tego jest uczynienie katalogu domowego Cygwin równym katalogowi profilu użytkownika Windows. To ustawienie zrobi to:
db_home: windows
Lub równoważnie:
db_home: /%H
Musisz użyć tego drugiego formularza, jeśli chcesz zmienić ten schemat, na przykład posegregować pliki domowe Cygwin do podkatalogu katalogu profilu użytkownika systemu Windows:
Jeśli zainstalowałeś Cygwin przed 1.7.34 lub uruchomiłeś jego mkpasswdnarzędzie , aby mieć /etc/passwdplik, możesz zmienić katalog domowy Cygwin, edytując wpis użytkownika w tym pliku. Twój katalog domowy jest przedostatnim elementem w wierszu użytkownika w /etc/passwd.¹
Niezależnie od tego, jak to zrobisz, spowoduje to ustawienie HOMEzmiennej środowiskowej podczas uruchamiania powłoki.²
Zobacz ten artykuł FAQ, aby uzyskać więcej informacji na ten temat.
Chociaż można to po prostu ustawić %HOME%za pośrednictwem Panelu sterowania, oficjalnie jest to odradzane . Nie tylko bezceremonialnie przesłania powyższe mechanizmy, ale nie zawsze działa, na przykład podczas uruchamiania skryptów powłoki za pośrednictwem cron.
Zauważ, że jeśli zainstalowano powłoki bash Git z git-scm.com/download/win , to może mieć problemy z Cygwin zainstalować (w zależności od opcji wybranych). Mój cygwin ~ trafił do mojego katalogu użytkownika Win7 i sshnie działałby poprawnie, dopóki nie został zmodyfikowany /etc/passwdzgodnie z opisem.
Allan
Problemy, o których @Allan wspomina tutaj z instalacjami git, rozwiązuje się przez ustawienie zmiennej środowiskowej Windows dla HOME, a następnie ponowne utworzenie /etc/passwdpliku. Zobacz moją odpowiedź tutaj, aby uniknąć takich problemów.
Christopher,
11
db_home: /%Hmoże rozwiązać nazwę użytkownika domeny (zamiast nazwy użytkownika lokalnego), która może nie być taka, jaką chciałbyś mieć. db_home: /cygdrive/c/Users/%Uzrobił, co chciałem.
Abdull
2
Widzę różnicę w wydajności między różnymi metodami. Kiedy używam db_home: windows, shuruchomienie zajmuje około 2,5 do 3,5 sekundy. Kiedy używam db_home: /cygdrive/c/Users/%U, shuruchomienie zajmuje około 0,9 do 1,0 sekundy. Po usunięciu db_homelinii lub zakodowaniu go na stałe w katalogu domowym systemu Windows, shuruchomienie zajmuje około 0,2 do 0,3 sekundy. Idę z rozwiązaniem zakodowanym na stałe, np. db_home: /cygdrive/c/Users/susamDlatego, że często uruchamiam skrypty powłoki z wiersza polecenia za pomocą shpolecenia, np. sh foo.shI czekanie dłużej niż 2 sekundy staje się niewygodne.
Susam Pal
1
Dziękuję @abdull, db_home: / cygdrive / c / Users /% U to odpowiedź, której potrzebowałem. db_home: Windows używa "/ home /% U", który nie istnieje w mojej konfiguracji.
Jeff
74
Cygwin 1.7.34+
Dla tych, którzy używają Cygwin 1.7.34 lub nowszego Cygwin obsługuje konfigurację sposobu pobierania katalogu domowego, powłoki logowania i informacji o gecos w plikach/etc/nsswitch.conf . Jest to szczegółowo opisane w sekcji Podręcznik użytkownika Cygwin:
Jeśli wcześniej utworzyłeś plik /etc/passwdlub /etc/group, będziesz chciał je usunąć i skonfigurować Cygwin przy użyciu nowego modelu Windows Security do mapowań POSIX.
Ustawienie /etc/nsswitch.confpliku db_home:definiuje sposób, w jaki Cygwin pobiera katalog domowy użytkownika. Domyślne ustawienie db_home:to
db_home: /home/%U
Więc domyślnie Cygwin po prostu ustawia katalog domowy na /home/$USERNAME. Możesz to jednak zmienić, aby wskazywać dowolną inną ścieżkę niestandardową. Obsługiwane symbole wieloznaczne to:
%u Nazwa użytkownika Cygwin (to małe litery u).
%U Nazwa użytkownika systemu Windows (to wielkie litery U).
%D Domena Windows w stylu NetBIOS.
%HKatalog domowy Windows w stylu POSIX. Zauważ, że w przypadku db_home:ustawienia ma to sens tylko zaraz po poprzedzającym go ukośniku, jak wdb_home: /%H/cygwin
%_Ponieważ do oddzielania schematów używane są znaki spacji i tabulacji, w nazwie pliku należy podać spację jako %_(to jest podkreślenie).
%% Znak procentu.
Zamiast ścieżki można określić jeden z czterech wstępnie zdefiniowanych nazwanych schematów ścieżek.
windowsKatalog domowy użytkownika jest ustawiony na ten sam katalog, który jest używany jako katalog domowy systemu Windows, zwykle coś podobnego do %USERPROFILE%lub C:\Users\$USERNAME. Oczywiście katalog Windows jest konwertowany na styl POSIX przez Cygwin.
cygwinTylko AD: katalog domowy użytkownika jest ustawiony na ścieżkę POSIX podaną w atrybucie cygwinHome z klasy pomocniczej cygwinUser. Zobacz także sekcję „Schemat Cygwin” .
unixTylko AD: Katalog domowy użytkownika jest ustawiony na ścieżkę POSIX podaną w atrybucie unixHomeDirectory z klasy pomocniczej posixAccount. Zobacz także sekcję „Schemat unixa” .
descKatalog domowy użytkownika jest ustawiony na ścieżkę POSIX podaną w ustawieniu home = "..." podobnym do XML w atrybucie opisu użytkownika w SAM lub AD. Szczegółowy opis znajduje się w sekcji „Schemat opisu”.
Poniższe sprawi, że katalog domowy użytkownika w Cygwin będzie taki sam, jak jest używany dla katalogu domowego systemu Windows.
db_home: windows
Cygwin 1.7.33 lub starszy
Dla tych, którzy używają Cygwin 1.7.33 lub wcześniejszej, zaktualizuj do najnowszej wersji Cygwin i usuń wcześniej używane pliki /etc/passwdi /etc/group, a następnie zobacz kroki powyżej.
W przeciwnym razie wykonaj te starsze kroki poniżej.
Po pierwsze, ustaw zmienną środowiskową Windows dla HOME, która wskazuje na Twój profil użytkownika:
Otwórz System w Panelu sterowania
Na karcie Zaawansowane kliknij Zmienne środowiskowe (u dołu)
W obszarze Zmienne użytkownika kliknij „Nowy…”
W polu Nazwa zmiennej wprowadź HOME
W polu Wartość zmiennej wprowadź %USERPROFILE%
Kliknij przycisk OK we wszystkich otwartych oknach dialogowych, aby zastosować to nowe ustawienie
Teraz zaktualizujemy /etc/passwdplik Cygwin za pomocą %HOME%właśnie utworzonej zmiennej Windows . Loginy powłoki i logowanie zdalne za pośrednictwem sshbędą polegały na /etc/passwdinformowaniu ich o lokalizacji $HOMEścieżki użytkownika .
-dPrzełącznik mówi mkpasswd obejmować użytkowników domeny, a -ljest jedynie wyjściowych użytkowników maszyn lokalnych. Jest to ważne, jeśli używasz komputera w pracy, na którym informacje o użytkowniku są pobierane z kontrolera domeny systemu Windows.
Teraz możesz zrobić to samo dla grup, chociaż nie jest to konieczne, chyba że będziesz używać komputera, który jest częścią domeny Windows. Cygwin odczytuje informacje o grupie z baz danych kont Windows, ale możesz dodać /etc/groupplik, jeśli twój komputer jest często odłączony od kontrolera domeny.
Teraz wyjdź z Cygwin i uruchom go ponownie. Powinieneś zauważyć, że twoja ścieżka HOME wskazuje tę samą lokalizację, co twój profil użytkownika Windows - tj/cygdrive/c/Users/username
Ben ma rację, możesz po prostu dodać wpis dla bieżącego użytkownika, podając zamiast tego opcję -c. Jeśli jednak to zrobisz, Cygwin wyświetli ????? dla użytkownika i grupy podczas wyświetlania listy plików we współdzielonych systemach plików, ponieważ nie będzie zawierał rekordów dla innych użytkowników i grup w Twojej Domenie lub komputerze lokalnym.
Christopher
1
Czy mogę zasugerować małą zmianę w sformułowaniu: zamiast `` Teraz zaktualizuj swój plik Cygwin / etc / passwd o nową ścieżkę $ HOME '', zasugerowałbym `` Teraz zaktualizujemy plik Cygwin / etc / passwd za pomocą Zmienna HOME, którą właśnie utworzyliśmy. ' Wielkie dzięki
Robert
Z -d Ukończenie zajmuje kilka minut (zabiłem po 5) minutach. Więc uruchomiłem ponownie z -c. Wszystko dobre dla moich potrzeb.
bartosz.r
1
@Samuel Dodałem wyjaśnienie, aby wyjaśnić cel mkgrouppowyższego.
Christopher,
30
Zrobiłem coś całkiem prostego. Nie chciałem zmieniać zmiennej środowiskowej systemu Windows 7. Więc bezpośrednio zredagowałem plik Cygwin.bat.
@echo off
SETLOCAL
set HOME=C:\path\to\home
C:
chdir C:\apps\cygwin\bin
bash --login -i
ENDLOCAL
To po prostu uruchamia lokalną powłokę z tym katalogiem domowym; tego właśnie chciałem. Nie mam zamiaru uzyskać do tego zdalnego dostępu, więc to zadziałało.
Po drugie, ponieważ nie mogę zmienić zmiennej środowiskowej mojego domu na moim komputerze deweloperskim.
Deqing
@WernerCD Ostrzegam tylko, że może to mieć niezamierzone konsekwencje podczas interakcji z natywnymi aplikacjami Windows. Twoje aplikacje Windows będą nadal szukać HOME w starej lokalizacji. Przykładem może być Gvim, który będzie utrzymywał oddzielną konfigurację vima w starej %HOME%lokalizacji Windows , podczas gdy Cygwin vim używa nowej $HOMEzadeklarowanej ścieżki.
Christopher
To jest świetne ... 5 lat później i podoba mi się to, ponieważ "inżynieria" jest na tyle prosta, że krewny Cygwin (jak ja) może go używać i rozumieć. Nawiasem mówiąc, umieszczenie skrótu do pliku .bat w C: \ Users \ <your_user_name> \ AppData \ Roaming \ Microsoft \ Windows \ SendTo oznacza, że możesz przejść do Send -> Cygwin w menu kontekstowym (kliknięcie prawym przyciskiem myszy) w Explorer (i otwórz terminal w dowolnym miejscu, za pomocą ~ / set, gdziekolwiek chcesz).
mike gryzoń
19
Cygwin mountobsługuje teraz metodę wiązania , która pozwala zamontować katalog. Dlatego możesz po prostu dodać następujący wiersz do /etc/fstab, a następnie ponownie uruchomić powłokę:
To jest obecnie właściwy sposób. Pozostałe odpowiedzi są nieaktualne.
ceving
@ceving Czy jest to gdzieś udokumentowane?
Asad Saeeduddin
10
Zmień zmienną środowiskową HOME.
w XP, kliknij prawym przyciskiem myszy Mój komputer >> Właściwości >> Zaawansowane >> Zmienne środowiskowe >> Zmienne użytkownika dla >> [wybierz zmienną HOME] >> edytuj
Spowoduje to również zmianę zmiennej środowiskowej HOME dla wszystkich aplikacji systemu Windows.
mob
Bardzo prawdziwe. Ale jakie masz aplikacje Windows, które używają zmiennej HOME? Mam EmacsW32 i .... Cygwin. Odkąd najpierw zainstalowałem Emacsa, tam też znajduje się mój dom cygwin.
Michael Paulukonis
1
Czy nie będzie to w jakiś sposób sprzeczne z / etc / passwd? Czy domyślnie / etc / passwd's HOME, jeśli zmienna środowiskowa nie jest ustawiona? Jeśli nie ma konfliktu i domyślnie będzie to / etc / passwd, wygląda na to, że konfiguracja jest idealna: uruchamiam Cygwin z pendrive'a, zarówno po to, aby uniknąć konieczności pytania o pozwolenie na instalację w pracy, więc mam Unix- jak środowisko w mojej kieszeni, którego mogę używać, gdy dostępne jest tylko pudełko z systemem Windows. W pracy mam katalog domowy mojego komputera w pracy, a gdzie indziej mogę mieć katalog domowy na pendrive.
ikonoklast
6
Chciałbym dodać poprawkę / aktualizację do bitu o $ HOME mającym pierwszeństwo. Katalog domowy w / etc / passwd ma pierwszeństwo przed wszystkim.
Jestem długoletnim użytkownikiem Cygwin i właśnie wykonałem czystą instalację systemu Windows 7 x64 i Cygwin V1.126. Szalałem, próbując dowiedzieć się, dlaczego za każdym razem, gdy uruchamiałem ssh, otrzymywałem:
e:\>ssh foo.bar.com
Could not create directory '/home/dhaynes/.ssh'.
The authenticity of host 'foo.bar.com (10.66.19.19)' can't be established.
...
Dodałem definicję HOME = c: \ users \ dhaynes w środowisku Windows, ale nadal próbowałem utworzyć '/ home / dhaynes'. Wypróbowałem każdą kombinację, jaką mogłem, w tym ustawienie HOME na / cygdrive / c / users / dhaynes. Wyszukałem w Google komunikat o błędzie, nie mogłem nic znaleźć, nie mogłem znaleźć niczego na stronie cygwin. Używam cygwin z cmd.exe, a nie bash.exe, ale problem występował w obu.
W końcu zdałem sobie sprawę, że katalog domowy w / etc / passwd ma pierwszeństwo przed zmienną środowiskową $ HOME. Po prostu ponownie uruchomiłem 'mkpasswd -l> / etc / passwd' i zaktualizowałem katalog domowy, teraz wszystko jest w porządku z ssh.
Może to być oczywiste dla typów linuksowych z doświadczeniem sysadmin, ale dla tych z nas, którzy używają głównie systemu Windows, jest to nieco niejasne.
Katalog domowy w / etc / passwd NIE ma pierwszeństwa przed wszystkim. Jest on jednak używany jako główne źródło ścieżki katalogu HOME podczas zdalnego logowania lub korzystania z ssh. Zobacz to z Cygwin FAQ cygwin.com/faq/faq.setup.html#faq.setup.home
Christopher
2
Tak się składa, że używam cwRsync (Cygwin + Rsync dla Windows), gdzie cygwin jest dostarczany w pakiecie i nie mogłem znaleźć / etc / passwd.
I powtarzał
Could not create directory '/home/username/.ssh'.
...
Failed to add the host to the list of known hosts (/home/username/.ssh/known_hosts).
Więc napisałem plik wsadowy, który zmienił zmienną HOME przed uruchomieniem rsync. Coś jak:
set HOME=.
rsync /path1 user@host:/path2
I altówka! Folder .ssh pojawił się w bieżącym katalogu roboczym, a rsync przestał denerwować odciskami palców rsa.
To szybka poprawka, ale później powinieneś zmienić HOME na bezpieczniejszą lokalizację.
db_home:
cudzysłowu i sprawić, by działał.Odpowiedzi:
Począwszy od Cygwin 1.7.34 , zalecanym sposobem jest dodanie niestandardowego
db_home
ustawienia do/etc/nsswitch.conf
. Powszechnym życzeniem podczas robienia tego jest uczynienie katalogu domowego Cygwin równym katalogowi profilu użytkownika Windows. To ustawienie zrobi to:Lub równoważnie:
Musisz użyć tego drugiego formularza, jeśli chcesz zmienić ten schemat, na przykład posegregować pliki domowe Cygwin do podkatalogu katalogu profilu użytkownika systemu Windows:
Istnieje kilka innych alternatywnych schematów tej
windows
opcji oraz kilka innych%
tokenów, których można użyć zamiast niej%H
lub oprócz niej. Patrz nansswitch.conf
opis składni w Użytkownikowi Cygwin przewodnik dla szczegółów.Jeśli zainstalowałeś Cygwin przed 1.7.34 lub uruchomiłeś jego
mkpasswd
narzędzie , aby mieć/etc/passwd
plik, możesz zmienić katalog domowy Cygwin, edytując wpis użytkownika w tym pliku. Twój katalog domowy jest przedostatnim elementem w wierszu użytkownika w/etc/passwd
.¹Niezależnie od tego, jak to zrobisz, spowoduje to ustawienie
HOME
zmiennej środowiskowej podczas uruchamiania powłoki.²Zobacz ten artykuł FAQ, aby uzyskać więcej informacji na ten temat.
Przypisy:
Rozważ przeniesienie się
/etc/passwd
i/etc/group
zejście z drogi, aby zamiast tego użyć nowego mechanizmu opartego na SAM / AD .Chociaż można to po prostu ustawić
%HOME%
za pośrednictwem Panelu sterowania, oficjalnie jest to odradzane . Nie tylko bezceremonialnie przesłania powyższe mechanizmy, ale nie zawsze działa, na przykład podczas uruchamiania skryptów powłoki za pośrednictwemcron
.źródło
ssh
nie działałby poprawnie, dopóki nie został zmodyfikowany/etc/passwd
zgodnie z opisem./etc/passwd
pliku. Zobacz moją odpowiedź tutaj, aby uniknąć takich problemów.db_home: /%H
może rozwiązać nazwę użytkownika domeny (zamiast nazwy użytkownika lokalnego), która może nie być taka, jaką chciałbyś mieć.db_home: /cygdrive/c/Users/%U
zrobił, co chciałem.db_home: windows
,sh
uruchomienie zajmuje około 2,5 do 3,5 sekundy. Kiedy używamdb_home: /cygdrive/c/Users/%U
,sh
uruchomienie zajmuje około 0,9 do 1,0 sekundy. Po usunięciudb_home
linii lub zakodowaniu go na stałe w katalogu domowym systemu Windows,sh
uruchomienie zajmuje około 0,2 do 0,3 sekundy. Idę z rozwiązaniem zakodowanym na stałe, np.db_home: /cygdrive/c/Users/susam
Dlatego, że często uruchamiam skrypty powłoki z wiersza polecenia za pomocąsh
polecenia, np.sh foo.sh
I czekanie dłużej niż 2 sekundy staje się niewygodne.Cygwin 1.7.34+
Dla tych, którzy używają Cygwin 1.7.34 lub nowszego Cygwin obsługuje konfigurację sposobu pobierania katalogu domowego, powłoki logowania i informacji o gecos w plikach
/etc/nsswitch.conf
. Jest to szczegółowo opisane w sekcji Podręcznik użytkownika Cygwin:Jeśli wcześniej utworzyłeś plik
/etc/passwd
lub/etc/group
, będziesz chciał je usunąć i skonfigurować Cygwin przy użyciu nowego modelu Windows Security do mapowań POSIX.Ustawienie
/etc/nsswitch.conf
plikudb_home:
definiuje sposób, w jaki Cygwin pobiera katalog domowy użytkownika. Domyślne ustawieniedb_home:
toWięc domyślnie Cygwin po prostu ustawia katalog domowy na
/home/$USERNAME
. Możesz to jednak zmienić, aby wskazywać dowolną inną ścieżkę niestandardową. Obsługiwane symbole wieloznaczne to:%u
Nazwa użytkownika Cygwin (to małe litery u).%U
Nazwa użytkownika systemu Windows (to wielkie litery U).%D
Domena Windows w stylu NetBIOS.%H
Katalog domowy Windows w stylu POSIX. Zauważ, że w przypadkudb_home:
ustawienia ma to sens tylko zaraz po poprzedzającym go ukośniku, jak wdb_home: /%H/cygwin
%_
Ponieważ do oddzielania schematów używane są znaki spacji i tabulacji, w nazwie pliku należy podać spację jako%_
(to jest podkreślenie).%%
Znak procentu.Zamiast ścieżki można określić jeden z czterech wstępnie zdefiniowanych nazwanych schematów ścieżek.
windows
Katalog domowy użytkownika jest ustawiony na ten sam katalog, który jest używany jako katalog domowy systemu Windows, zwykle coś podobnego do%USERPROFILE%
lubC:\Users\$USERNAME
. Oczywiście katalog Windows jest konwertowany na styl POSIX przez Cygwin.cygwin
Tylko AD: katalog domowy użytkownika jest ustawiony na ścieżkę POSIX podaną w atrybucie cygwinHome z klasy pomocniczej cygwinUser. Zobacz także sekcję „Schemat Cygwin” .unix
Tylko AD: Katalog domowy użytkownika jest ustawiony na ścieżkę POSIX podaną w atrybucie unixHomeDirectory z klasy pomocniczej posixAccount. Zobacz także sekcję „Schemat unixa” .desc
Katalog domowy użytkownika jest ustawiony na ścieżkę POSIX podaną w ustawieniu home = "..." podobnym do XML w atrybucie opisu użytkownika w SAM lub AD. Szczegółowy opis znajduje się w sekcji „Schemat opisu”.Poniższe sprawi, że katalog domowy użytkownika w Cygwin będzie taki sam, jak jest używany dla katalogu domowego systemu Windows.
Cygwin 1.7.33 lub starszy
Dla tych, którzy używają Cygwin 1.7.33 lub wcześniejszej, zaktualizuj do najnowszej wersji Cygwin i usuń wcześniej używane pliki
/etc/passwd
i/etc/group
, a następnie zobacz kroki powyżej.W przeciwnym razie wykonaj te starsze kroki poniżej.
Po pierwsze, ustaw zmienną środowiskową Windows dla HOME, która wskazuje na Twój profil użytkownika:
HOME
%USERPROFILE%
Teraz zaktualizujemy
/etc/passwd
plik Cygwin za pomocą%HOME%
właśnie utworzonej zmiennej Windows . Loginy powłoki i logowanie zdalne za pośrednictwemssh
będą polegały na/etc/passwd
informowaniu ich o lokalizacji$HOME
ścieżki użytkownika .W wierszu polecenia Cygwin bash wpisz:
-d
Przełącznik mówi mkpasswd obejmować użytkowników domeny, a-l
jest jedynie wyjściowych użytkowników maszyn lokalnych. Jest to ważne, jeśli używasz komputera w pracy, na którym informacje o użytkowniku są pobierane z kontrolera domeny systemu Windows.Teraz możesz zrobić to samo dla grup, chociaż nie jest to konieczne, chyba że będziesz używać komputera, który jest częścią domeny Windows. Cygwin odczytuje informacje o grupie z baz danych kont Windows, ale możesz dodać
/etc/group
plik, jeśli twój komputer jest często odłączony od kontrolera domeny.Po znaku zachęty Cygwin bash wpisz:
Teraz wyjdź z Cygwin i uruchom go ponownie. Powinieneś zauważyć, że twoja ścieżka HOME wskazuje tę samą lokalizację, co twój profil użytkownika Windows - tj
/cygdrive/c/Users/username
źródło
mkgroup
powyższego.Zrobiłem coś całkiem prostego. Nie chciałem zmieniać zmiennej środowiskowej systemu Windows 7. Więc bezpośrednio zredagowałem plik Cygwin.bat.
To po prostu uruchamia lokalną powłokę z tym katalogiem domowym; tego właśnie chciałem. Nie mam zamiaru uzyskać do tego zdalnego dostępu, więc to zadziałało.
źródło
%HOME%
lokalizacji Windows , podczas gdy Cygwin vim używa nowej$HOME
zadeklarowanej ścieżki.Cygwin
mount
obsługuje teraz metodę wiązania , która pozwala zamontować katalog. Dlatego możesz po prostu dodać następujący wiersz do/etc/fstab
, a następnie ponownie uruchomić powłokę:źródło
Zmień zmienną środowiskową HOME.
w XP, kliknij prawym przyciskiem myszy Mój komputer >> Właściwości >> Zaawansowane >> Zmienne środowiskowe >> Zmienne użytkownika dla >> [wybierz zmienną HOME] >> edytuj
źródło
Chciałbym dodać poprawkę / aktualizację do bitu o $ HOME mającym pierwszeństwo. Katalog domowy w / etc / passwd ma pierwszeństwo przed wszystkim.
Jestem długoletnim użytkownikiem Cygwin i właśnie wykonałem czystą instalację systemu Windows 7 x64 i Cygwin V1.126. Szalałem, próbując dowiedzieć się, dlaczego za każdym razem, gdy uruchamiałem ssh, otrzymywałem:
Dodałem definicję HOME = c: \ users \ dhaynes w środowisku Windows, ale nadal próbowałem utworzyć '/ home / dhaynes'. Wypróbowałem każdą kombinację, jaką mogłem, w tym ustawienie HOME na / cygdrive / c / users / dhaynes. Wyszukałem w Google komunikat o błędzie, nie mogłem nic znaleźć, nie mogłem znaleźć niczego na stronie cygwin. Używam cygwin z cmd.exe, a nie bash.exe, ale problem występował w obu.
W końcu zdałem sobie sprawę, że katalog domowy w / etc / passwd ma pierwszeństwo przed zmienną środowiskową $ HOME. Po prostu ponownie uruchomiłem 'mkpasswd -l> / etc / passwd' i zaktualizowałem katalog domowy, teraz wszystko jest w porządku z ssh.
Może to być oczywiste dla typów linuksowych z doświadczeniem sysadmin, ale dla tych z nas, którzy używają głównie systemu Windows, jest to nieco niejasne.
źródło
Tak się składa, że używam cwRsync (Cygwin + Rsync dla Windows), gdzie cygwin jest dostarczany w pakiecie i nie mogłem znaleźć / etc / passwd.
I powtarzał
Więc napisałem plik wsadowy, który zmienił zmienną HOME przed uruchomieniem rsync. Coś jak:
I altówka! Folder .ssh pojawił się w bieżącym katalogu roboczym, a rsync przestał denerwować odciskami palców rsa.
To szybka poprawka, ale później powinieneś zmienić HOME na bezpieczniejszą lokalizację.
źródło