Wie kann ich meinen Cygwin-Home-Ordner nach der Installation ändern?
121
Ich habe gerade Cygwin installiert und es sieht so aus, als ob sich das Home-Verzeichnis in der Bash-Eingabeaufforderung auf meinem Z: -Laufwerk befindet. Dort will ich es nicht.
Verwenden Sie für Benutzer von Cygwin 1.7.34 oder höher die in den anderen Beiträgen erläuterten Methoden. Vergessen Sie jedoch nicht, das # vorher db_home:zu entfernen, um das Zitat aufzuheben und es zum Laufen zu bringen.
Maieul
Antworten:
180
Ab Cygwin 1.7.34 wird empfohlen, eine benutzerdefinierte db_homeEinstellung hinzuzufügen /etc/nsswitch.conf. Ein häufiger Wunsch dabei ist es, Ihr Cygwin-Ausgangsverzeichnis Ihrem Windows-Benutzerprofilverzeichnis anzupassen. Diese Einstellung bewirkt Folgendes:
db_home: windows
Oder gleichwertig:
db_home: /%H
Sie müssen das letztere Formular verwenden, wenn Sie eine Variation dieses Schemas wünschen, z. B. um Ihre Cygwin-Home-Dateien in ein Unterverzeichnis Ihres Windows-Benutzerprofilverzeichnisses zu trennen :
db_home: /%H/cygwin
Es gibt mehrere andere alternative Schemata für die windowsOption sowie mehrere andere %Token, die Sie anstelle %Hoder zusätzlich dazu verwenden können. Weitere Informationen finden Sie in der nsswitch.confSyntaxbeschreibung im Cygwin-Benutzerhandbuch .
Wenn Sie Cygwin vor 1.7.34 installiert haben oder das mkpasswdDienstprogramm so ausgeführt haben, dass Sie über eine /etc/passwdDatei verfügen , können Sie Ihr Cygwin- Ausgangsverzeichnis ändern, indem Sie den Eintrag Ihres Benutzers in dieser Datei bearbeiten. Ihr Home-Verzeichnis ist das vorletzte Element in der Zeile Ihres Benutzers in /etc/passwd.¹
Unabhängig davon, wie Sie dies tun, wird die HOMEUmgebungsvariable beim Start der Shell festgelegt.²
Es ist zwar möglich, einfach %HOME%über die Systemsteuerung einzustellen , es wird jedoch offiziell davon abgeraten . Es überschreibt nicht nur kurzerhand die oben genannten Mechanismen, es funktioniert auch nicht immer, beispielsweise wenn Shell-Skripte über ausgeführt werden cron.
Beachten Sie, dass , wenn Sie die Git - Bash - Shell aus installiert git-scm.com/download/win , Sie könnten Probleme haben mit der Cygwin installieren (je nachdem , was Optionen , die Sie gewählt haben). Mein cygwin ~ landete in meinem Win7-Benutzerverzeichnis und sshfunktionierte erst richtig, wenn er /etc/passwdwie beschrieben bearbeitet wurde .
Allan
Die Probleme, die @Allan hier bei Git-Installationen erwähnt, werden behoben, indem die Windows-Umgebungsvariable für HOME festgelegt und die /etc/passwdDatei anschließend neu erstellt wird. Siehe meine Antwort hier , um solche Probleme zu vermeiden.
Christopher
11
db_home: /%HMöglicherweise wird ein Domänenbenutzername (anstelle des lokalen Benutzernamens) aufgelöst, der möglicherweise nicht Ihren Wünschen entspricht. db_home: /cygdrive/c/Users/%Utat was ich wollte.
Abdull
2
Ich sehe einen Leistungsunterschied zwischen den verschiedenen Methoden. Wenn ich benutze db_home: windows, dauert shder Start ungefähr 2,5 bis 3,5 Sekunden. Wenn ich benutze db_home: /cygdrive/c/Users/%U, dauert shder Start ungefähr 0,9 bis 1,0 Sekunden. Wenn ich die db_homeZeile lösche oder fest in das Windows- shAusgangsverzeichnis codiere, dauert der Start etwa 0,2 bis 0,3 Sekunden. Ich gehe mit der fest codierten Lösung, z. B. db_home: /cygdrive/c/Users/susamweil ich häufig Shell-Skripte über die Eingabeaufforderung mit dem shBefehl ausführe , z. B. sh foo.shund es unpraktisch wird, länger als 2 Sekunden zu warten.
Susam Pal
1
Vielen Dank an @abdull, db_home: / cygdrive / c / Users /% U ist die Antwort, die ich brauchte. db_home: Windows verwendet "/ home /% U", das in meiner Konfiguration nicht vorhanden ist.
Jeff
74
Cygwin 1.7.34+
Für Benutzer von Cygwin 1.7.34 oder höher unterstützt Cygwin die Konfiguration des Abrufs von Home-Verzeichnis-, Anmeldeshell- und Gecos-Informationen in /etc/nsswitch.conf. Dies wird im Abschnitt Cygwin-Benutzerhandbuch beschrieben:
Wenn Sie zuvor eine /etc/passwdoder /etc/group-Datei erstellt haben, möchten Sie diese entfernen und Cygwin mithilfe des neuen Windows-Sicherheitsmodells für POSIX-Zuordnungen konfigurieren.
Die Einstellung der /etc/nsswitch.confDatei db_home:definiert, wie Cygwin das Home-Verzeichnis des Benutzers abruft. Die Standardeinstellung für db_home:ist
db_home: /home/%U
Standardmäßig setzt Cygwin nur das Ausgangsverzeichnis auf /home/$USERNAME. Sie können dies jedoch ändern, um auf einen beliebigen anderen benutzerdefinierten Pfad zu verweisen. Die unterstützten Platzhalterzeichen sind:
%u Der Cygwin-Benutzername (das ist u in Kleinbuchstaben).
%U Der Windows-Benutzername (das ist U in Großbuchstaben).
%D Windows-Domäne im NetBIOS-Stil.
%HWindows-Ausgangsverzeichnis im POSIX-Stil. Beachten Sie, dass dies für die db_home:Einstellung nur direkt nach dem vorhergehenden Schrägstrich sinnvoll ist, wie indb_home: /%H/cygwin
%_Da Leerzeichen und TAB-Zeichen zum Trennen der Schemata verwendet werden, muss ein Leerzeichen im Dateinamen als %_(das ist ein Unterstrich) angegeben werden.
%% Ein Prozentzeichen.
Anstelle eines Pfads können Sie eines von vier vordefinierten benannten Pfadschemata angeben.
windowsDas Ausgangsverzeichnis des Benutzers wird auf dasselbe Verzeichnis festgelegt, das als Windows-Ausgangsverzeichnis verwendet wird, normalerweise in Anlehnung an %USERPROFILE%oder C:\Users\$USERNAME. Natürlich wird das Windows-Verzeichnis von Cygwin in den POSIX-Stil konvertiert.
cygwinNur AD: Das Home-Verzeichnis des Benutzers wird auf den POSIX-Pfad festgelegt, der im Attribut cygwinHome der Hilfsklasse cygwinUser angegeben ist. Siehe auch den Abschnitt „Das Cygwin-Schema“ .
unixNur AD: Das Basisverzeichnis des Benutzers wird auf den POSIX-Pfad festgelegt, der im Attribut unixHomeDirectory der Hilfsklasse posixAccount angegeben ist. Siehe auch den Abschnitt „Das Unix-Schema“ .
descDas Home-Verzeichnis des Benutzers wird auf den POSIX-Pfad gesetzt, der in der XML-ähnlichen Einstellung home = "..." im Beschreibungsattribut des Benutzers in SAM oder AD angegeben ist. Eine ausführliche Beschreibung finden Sie im Abschnitt „Das Desc-Schema“.
Im Folgenden wird das Basisverzeichnis des Benutzers in Cygwin mit dem für das Windows-Basisverzeichnis verwendeten identisch.
db_home: windows
Cygwin 1.7.33 oder früher
Wenn Sie Cygwin 1.7.33 oder früher verwenden, aktualisieren Sie auf die neueste Version von Cygwin und entfernen Sie zuvor verwendete Dateien /etc/passwdund /etc/groupDateien. Führen Sie dann die obigen Schritte aus.
Befolgen Sie andernfalls die folgenden älteren Schritte.
Legen Sie zunächst eine Windows-Umgebungsvariable für HOME fest, die auf Ihr Benutzerprofil verweist:
Öffnen Sie das System in der Systemsteuerung
Klicken Sie auf der Registerkarte Erweitert auf Umgebungsvariablen (unten).
Klicken Sie im Bereich Benutzervariablen auf "Neu ...".
Geben Sie als Variablennamen ein HOME
Geben Sie als Variablenwert ein %USERPROFILE%
Klicken Sie in allen geöffneten Dialogfeldern auf OK, um diese neue Einstellung anzuwenden
Jetzt aktualisieren wir die Cygwin- /etc/passwdDatei mit der %HOME%soeben erstellten Windows- Variablen. Shell-Anmeldungen und Remote-Anmeldungen über sshgeben an /etc/passwd, wo sich der $HOMEPfad des Benutzers befindet .
Geben Sie an der Cygwin-Bash-Eingabeaufforderung Folgendes ein:
Der -dSwitch weist mkpasswd an, DOMAIN-Benutzer einzuschließen, während -lnur LOCAL-Maschinenbenutzer ausgegeben werden sollen. Dies ist wichtig, wenn Sie bei der Arbeit einen PC verwenden, auf dem die Benutzerinformationen von einem Windows-Domänencontroller abgerufen werden.
Jetzt können Sie dasselbe auch für Gruppen tun, obwohl dies nur erforderlich ist, wenn Sie einen Computer verwenden, der Teil einer Windows-Domäne ist. Cygwin liest Gruppeninformationen aus den Windows-Kontodatenbanken. Sie können jedoch eine /etc/groupDatei hinzufügen , wenn Ihr Computer häufig von seinem Domänencontroller getrennt wird.
Geben Sie an der Cygwin-Bash-Eingabeaufforderung Folgendes ein:
Beenden Sie nun Cygwin und starten Sie es erneut. Sie sollten feststellen, dass Ihr HOME-Pfad auf denselben Speicherort wie Ihr Windows-Benutzerprofil verweist - d. H./cygdrive/c/Users/username
Ben hat Recht, dass Sie einfach einen Eintrag für den aktuellen Benutzer hinzufügen können, indem Sie stattdessen -c angeben. Wenn Sie dies jedoch tun, zeigt Cygwin ????? für den Benutzer und die Gruppe beim Auflisten von Dateien in gemeinsam genutzten Dateisystemen, da keine Datensätze für andere Benutzer und Gruppen auf Ihrer Domäne oder Ihrem lokalen Computer vorhanden sind.
Christopher
1
Kann ich eine kleine Änderung im Wortlaut vorschlagen: Anstatt "Jetzt aktualisieren Sie Ihre Cygwin / etc / passwd-Datei mit einem neuen $ HOME-Pfad", würde ich vorschlagen, "Jetzt werden wir die Cygwin / etc / passwd-Datei mit dem aktualisieren." HOME-Variable, die wir gerade erstellt haben. ' Vielen Dank
Robert
Mit -d Es dauert Minuten (ich habe nach 5 getötet) Minuten, um abzuschließen. Also habe ich mit -c wiederholt. Alles gut für meine Bedürfnisse.
Bartosz.r
1
@ Samuel Ich habe eine Erklärung hinzugefügt, um den Zweck von mkgroupoben zu verdeutlichen .
Christopher
30
Ich habe etwas ganz Einfaches gemacht. Ich wollte die Windows 7-Umgebungsvariable nicht ändern. Also habe ich die Datei Cygwin.bat direkt bearbeitet.
@echo off
SETLOCAL
set HOME=C:\path\to\home
C:
chdir C:\apps\cygwin\bin
bash --login -i
ENDLOCAL
Dies startet nur die lokale Shell mit diesem Home-Verzeichnis; das wollte ich. Ich werde nicht remote darauf zugreifen, daher hat dies für mich funktioniert.
Zweitens, da ich meine Heimumgebungsvariable auf meinem Entwicklungscomputer nicht ändern kann.
Deqing
@WernerCD Ich möchte nur darauf hinweisen, dass dies unbeabsichtigte Folgen bei der Interaktion mit nativen Windows-Anwendungen haben kann. Ihre Windows-Anwendungen suchen weiterhin am alten Speicherort nach HOME. Ein Beispiel wäre Gvim, das eine separate vim-Konfiguration am alten Windows- %HOME%Speicherort beibehält , während Cygwin vim den von $HOMEIhnen deklarierten neuen Pfad verwendet.
Christopher
Das ist großartig ... 5 Jahre später und ich mag es, weil das "Engineering" für einen Cygwin-Neuling (wie mich) einfach genug ist, um es zu verwenden und zu verstehen. Wenn Sie eine Verknüpfung zu Ihrer .bat-Datei in C: \ Benutzer \ <Ihr_Benutzername> \ AppData \ Roaming \ Microsoft \ Windows \ SendTo einfügen, können Sie in Ihrem kontextsensitiven Menü (Rechtsklick) unter Senden -> Cygwin auswählen Explorer (und öffnen Sie ein Terminal an einer beliebigen Stelle mit ~ / set, wo immer Sie möchten).
Mike Nagetier
19
Cygwin unterstützt mountjetzt die Bindemethode , mit der Sie ein Verzeichnis bereitstellen können. Daher können Sie einfach die folgende Zeile hinzufügen /etc/fstabund dann Ihre Shell neu starten:
Dies ist heutzutage der richtige Weg. Die anderen Antworten sind veraltet.
Ceving
@ceving Ist das irgendwo dokumentiert?
Asad Saeeduddin
10
Ändern Sie Ihre HOME-Umgebungsvariable.
Klicken Sie unter XP mit der rechten Maustaste auf Arbeitsplatz >> Eigenschaften >> Erweitert >> Umgebungsvariablen >> Benutzervariablen für >> [Variable HOME auswählen] >> Bearbeiten
Dadurch wird Ihre HOME-Umgebungsvariable auch für alle Windows-Anwendungen geändert.
Mob
Sehr richtig. Aber welche Windows-Anwendungen verwenden die Variable HOME? Ich habe EmacsW32 und ... Cygwin. Seit ich Emacs zuerst installiert habe, liegt dort auch mein Cygwin-Zuhause.
Michael Paulukonis
1
Wird dieser Konflikt nicht irgendwie mit / etc / passwd? Wird standardmäßig / etc / passwds HOME verwendet, wenn die Umgebungsvariable nicht festgelegt ist? Wenn es keinen Konflikt gibt und standardmäßig / etc / passwd verwendet wird, scheint dies die perfekte Einrichtung zu sein: Ich führe Cygwin von einem USB-Stick aus, um zu vermeiden, dass ich um Erlaubnis zur Installation bei der Arbeit bitten muss, und daher habe ich ein Unix- wie eine Umgebung in meiner Tasche, die ich verwenden kann, wenn nur eine Windows-Box verfügbar ist. Bei der Arbeit habe ich das Home-Verzeichnis meines Arbeitscomputers, und an anderer Stelle kann ich ein Home-Verzeichnis auf dem USB-Stick haben.
Bilderstürmer
6
Ich möchte dem Bit über $ HOME eine Korrektur / Aktualisierung hinzufügen, die Vorrang hat. Das Home-Verzeichnis in / etc / passwd hat Vorrang vor allem.
Ich bin ein langjähriger Cygwin-Benutzer und habe gerade eine Neuinstallation von Windows 7 x64 und Cygwin V1.126 durchgeführt. Ich war verrückt, um herauszufinden, warum ich jedes Mal, wenn ich ssh lief, immer wieder Folgendes bekam:
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.
...
Ich füge die Definition HOME = c: \ users \ dhaynes in der Windows-Umgebung hinzu, aber es wurde immer wieder versucht, '/ home / dhaynes' zu erstellen. Ich habe jede mögliche Kombination ausprobiert, einschließlich der Einstellung von HOME auf / cygdrive / c / users / dhaynes. Nach der Fehlermeldung gegoogelt, konnte nichts finden, konnte nichts auf der Cygwin-Site finden. Ich benutze cygwin von cmd.exe, nicht bash.exe, aber das Problem war in beiden vorhanden.
Endlich wurde mir klar, dass das Home-Verzeichnis in / etc / passwd Vorrang vor der Umgebungsvariablen $ HOME hat. Ich habe einfach 'mkpasswd -l> / etc / passwd' erneut ausgeführt und das Home-Verzeichnis aktualisiert, jetzt ist alles in Ordnung mit ssh.
Das mag für Linux-Typen mit Sysadmin-Erfahrung offensichtlich sein, aber für diejenigen von uns, die hauptsächlich Windows verwenden, ist es etwas dunkel.
Das Home-Verzeichnis in / etc / passwd hat NICHT Vorrang vor allem. Es wird jedoch als primäre Quelle für Ihren HOME-Verzeichnispfad verwendet, wenn Sie sich remote anmelden oder ssh verwenden. Siehe dies aus den Cygwin FAQ cygwin.com/faq/faq.setup.html#faq.setup.home
Christopher
2
Ich verwende zufällig cwRsync (Cygwin + Rsync für Windows), wo Cygwin gebündelt geliefert wird, und ich konnte / etc / passwd nicht finden.
Und es sagte immer wieder
Could not create directory '/home/username/.ssh'.
...
Failed to add the host to the list of known hosts (/home/username/.ssh/known_hosts).
Also habe ich eine Batch-Datei geschrieben, die die HOME-Variable geändert hat, bevor ich rsync ausgeführt habe. Etwas wie:
set HOME=.
rsync /path1 user@host:/path2
Und Bratsche! Der Ordner .ssh wurde im aktuellen Arbeitsverzeichnis angezeigt und rsync hat aufgehört, mit rsa-Fingerabdrücken zu nerven.
Es ist ein schneller Hotfix, aber später sollten Sie HOME an einen sichereren Ort ändern.
db_home:
zu entfernen, um das Zitat aufzuheben und es zum Laufen zu bringen.Antworten:
Ab Cygwin 1.7.34 wird empfohlen, eine benutzerdefinierte
db_home
Einstellung hinzuzufügen/etc/nsswitch.conf
. Ein häufiger Wunsch dabei ist es, Ihr Cygwin-Ausgangsverzeichnis Ihrem Windows-Benutzerprofilverzeichnis anzupassen. Diese Einstellung bewirkt Folgendes:Oder gleichwertig:
Sie müssen das letztere Formular verwenden, wenn Sie eine Variation dieses Schemas wünschen, z. B. um Ihre Cygwin-Home-Dateien in ein Unterverzeichnis Ihres Windows-Benutzerprofilverzeichnisses zu trennen :
Es gibt mehrere andere alternative Schemata für die
windows
Option sowie mehrere andere%
Token, die Sie anstelle%H
oder zusätzlich dazu verwenden können. Weitere Informationen finden Sie in dernsswitch.conf
Syntaxbeschreibung im Cygwin-Benutzerhandbuch .Wenn Sie Cygwin vor 1.7.34 installiert haben oder das
mkpasswd
Dienstprogramm so ausgeführt haben, dass Sie über eine/etc/passwd
Datei verfügen , können Sie Ihr Cygwin- Ausgangsverzeichnis ändern, indem Sie den Eintrag Ihres Benutzers in dieser Datei bearbeiten. Ihr Home-Verzeichnis ist das vorletzte Element in der Zeile Ihres Benutzers in/etc/passwd
.¹Unabhängig davon, wie Sie dies tun, wird die
HOME
Umgebungsvariable beim Start der Shell festgelegt.²Weitere Informationen zum Thema finden Sie in diesem FAQ-Artikel .
Fußnoten:
Ziehen Sie in Betracht, sich zu bewegen
/etc/passwd
und/etc/group
aus dem Weg zu gehen, um stattdessen den neuen SAM / AD-basierten Mechanismus zu verwenden.Es ist zwar möglich, einfach
%HOME%
über die Systemsteuerung einzustellen , es wird jedoch offiziell davon abgeraten . Es überschreibt nicht nur kurzerhand die oben genannten Mechanismen, es funktioniert auch nicht immer, beispielsweise wenn Shell-Skripte über ausgeführt werdencron
.quelle
ssh
funktionierte erst richtig, wenn er/etc/passwd
wie beschrieben bearbeitet wurde ./etc/passwd
Datei anschließend neu erstellt wird. Siehe meine Antwort hier , um solche Probleme zu vermeiden.db_home: /%H
Möglicherweise wird ein Domänenbenutzername (anstelle des lokalen Benutzernamens) aufgelöst, der möglicherweise nicht Ihren Wünschen entspricht.db_home: /cygdrive/c/Users/%U
tat was ich wollte.db_home: windows
, dauertsh
der Start ungefähr 2,5 bis 3,5 Sekunden. Wenn ich benutzedb_home: /cygdrive/c/Users/%U
, dauertsh
der Start ungefähr 0,9 bis 1,0 Sekunden. Wenn ich diedb_home
Zeile lösche oder fest in das Windows-sh
Ausgangsverzeichnis codiere, dauert der Start etwa 0,2 bis 0,3 Sekunden. Ich gehe mit der fest codierten Lösung, z. B.db_home: /cygdrive/c/Users/susam
weil ich häufig Shell-Skripte über die Eingabeaufforderung mit demsh
Befehl ausführe , z. B.sh foo.sh
und es unpraktisch wird, länger als 2 Sekunden zu warten.Cygwin 1.7.34+
Für Benutzer von Cygwin 1.7.34 oder höher unterstützt Cygwin die Konfiguration des Abrufs von Home-Verzeichnis-, Anmeldeshell- und Gecos-Informationen in
/etc/nsswitch.conf
. Dies wird im Abschnitt Cygwin-Benutzerhandbuch beschrieben:Wenn Sie zuvor eine
/etc/passwd
oder/etc/group
-Datei erstellt haben, möchten Sie diese entfernen und Cygwin mithilfe des neuen Windows-Sicherheitsmodells für POSIX-Zuordnungen konfigurieren.Die Einstellung der
/etc/nsswitch.conf
Dateidb_home:
definiert, wie Cygwin das Home-Verzeichnis des Benutzers abruft. Die Standardeinstellung fürdb_home:
istStandardmäßig setzt Cygwin nur das Ausgangsverzeichnis auf
/home/$USERNAME
. Sie können dies jedoch ändern, um auf einen beliebigen anderen benutzerdefinierten Pfad zu verweisen. Die unterstützten Platzhalterzeichen sind:%u
Der Cygwin-Benutzername (das ist u in Kleinbuchstaben).%U
Der Windows-Benutzername (das ist U in Großbuchstaben).%D
Windows-Domäne im NetBIOS-Stil.%H
Windows-Ausgangsverzeichnis im POSIX-Stil. Beachten Sie, dass dies für diedb_home:
Einstellung nur direkt nach dem vorhergehenden Schrägstrich sinnvoll ist, wie indb_home: /%H/cygwin
%_
Da Leerzeichen und TAB-Zeichen zum Trennen der Schemata verwendet werden, muss ein Leerzeichen im Dateinamen als%_
(das ist ein Unterstrich) angegeben werden.%%
Ein Prozentzeichen.Anstelle eines Pfads können Sie eines von vier vordefinierten benannten Pfadschemata angeben.
windows
Das Ausgangsverzeichnis des Benutzers wird auf dasselbe Verzeichnis festgelegt, das als Windows-Ausgangsverzeichnis verwendet wird, normalerweise in Anlehnung an%USERPROFILE%
oderC:\Users\$USERNAME
. Natürlich wird das Windows-Verzeichnis von Cygwin in den POSIX-Stil konvertiert.cygwin
Nur AD: Das Home-Verzeichnis des Benutzers wird auf den POSIX-Pfad festgelegt, der im Attribut cygwinHome der Hilfsklasse cygwinUser angegeben ist. Siehe auch den Abschnitt „Das Cygwin-Schema“ .unix
Nur AD: Das Basisverzeichnis des Benutzers wird auf den POSIX-Pfad festgelegt, der im Attribut unixHomeDirectory der Hilfsklasse posixAccount angegeben ist. Siehe auch den Abschnitt „Das Unix-Schema“ .desc
Das Home-Verzeichnis des Benutzers wird auf den POSIX-Pfad gesetzt, der in der XML-ähnlichen Einstellung home = "..." im Beschreibungsattribut des Benutzers in SAM oder AD angegeben ist. Eine ausführliche Beschreibung finden Sie im Abschnitt „Das Desc-Schema“.Im Folgenden wird das Basisverzeichnis des Benutzers in Cygwin mit dem für das Windows-Basisverzeichnis verwendeten identisch.
Cygwin 1.7.33 oder früher
Wenn Sie Cygwin 1.7.33 oder früher verwenden, aktualisieren Sie auf die neueste Version von Cygwin und entfernen Sie zuvor verwendete Dateien
/etc/passwd
und/etc/group
Dateien. Führen Sie dann die obigen Schritte aus.Befolgen Sie andernfalls die folgenden älteren Schritte.
Legen Sie zunächst eine Windows-Umgebungsvariable für HOME fest, die auf Ihr Benutzerprofil verweist:
HOME
%USERPROFILE%
Jetzt aktualisieren wir die Cygwin-
/etc/passwd
Datei mit der%HOME%
soeben erstellten Windows- Variablen. Shell-Anmeldungen und Remote-Anmeldungen überssh
geben an/etc/passwd
, wo sich der$HOME
Pfad des Benutzers befindet .Geben Sie an der Cygwin-Bash-Eingabeaufforderung Folgendes ein:
Der
-d
Switch weist mkpasswd an, DOMAIN-Benutzer einzuschließen, während-l
nur LOCAL-Maschinenbenutzer ausgegeben werden sollen. Dies ist wichtig, wenn Sie bei der Arbeit einen PC verwenden, auf dem die Benutzerinformationen von einem Windows-Domänencontroller abgerufen werden.Jetzt können Sie dasselbe auch für Gruppen tun, obwohl dies nur erforderlich ist, wenn Sie einen Computer verwenden, der Teil einer Windows-Domäne ist. Cygwin liest Gruppeninformationen aus den Windows-Kontodatenbanken. Sie können jedoch eine
/etc/group
Datei hinzufügen , wenn Ihr Computer häufig von seinem Domänencontroller getrennt wird.Geben Sie an der Cygwin-Bash-Eingabeaufforderung Folgendes ein:
Beenden Sie nun Cygwin und starten Sie es erneut. Sie sollten feststellen, dass Ihr HOME-Pfad auf denselben Speicherort wie Ihr Windows-Benutzerprofil verweist - d. H.
/cygdrive/c/Users/username
quelle
mkgroup
oben zu verdeutlichen .Ich habe etwas ganz Einfaches gemacht. Ich wollte die Windows 7-Umgebungsvariable nicht ändern. Also habe ich die Datei Cygwin.bat direkt bearbeitet.
Dies startet nur die lokale Shell mit diesem Home-Verzeichnis; das wollte ich. Ich werde nicht remote darauf zugreifen, daher hat dies für mich funktioniert.
quelle
%HOME%
Speicherort beibehält , während Cygwin vim den von$HOME
Ihnen deklarierten neuen Pfad verwendet.Cygwin unterstützt
mount
jetzt die Bindemethode , mit der Sie ein Verzeichnis bereitstellen können. Daher können Sie einfach die folgende Zeile hinzufügen/etc/fstab
und dann Ihre Shell neu starten:quelle
Ändern Sie Ihre HOME-Umgebungsvariable.
Klicken Sie unter XP mit der rechten Maustaste auf Arbeitsplatz >> Eigenschaften >> Erweitert >> Umgebungsvariablen >> Benutzervariablen für >> [Variable HOME auswählen] >> Bearbeiten
quelle
Ich möchte dem Bit über $ HOME eine Korrektur / Aktualisierung hinzufügen, die Vorrang hat. Das Home-Verzeichnis in / etc / passwd hat Vorrang vor allem.
Ich bin ein langjähriger Cygwin-Benutzer und habe gerade eine Neuinstallation von Windows 7 x64 und Cygwin V1.126 durchgeführt. Ich war verrückt, um herauszufinden, warum ich jedes Mal, wenn ich ssh lief, immer wieder Folgendes bekam:
Ich füge die Definition HOME = c: \ users \ dhaynes in der Windows-Umgebung hinzu, aber es wurde immer wieder versucht, '/ home / dhaynes' zu erstellen. Ich habe jede mögliche Kombination ausprobiert, einschließlich der Einstellung von HOME auf / cygdrive / c / users / dhaynes. Nach der Fehlermeldung gegoogelt, konnte nichts finden, konnte nichts auf der Cygwin-Site finden. Ich benutze cygwin von cmd.exe, nicht bash.exe, aber das Problem war in beiden vorhanden.
Endlich wurde mir klar, dass das Home-Verzeichnis in / etc / passwd Vorrang vor der Umgebungsvariablen $ HOME hat. Ich habe einfach 'mkpasswd -l> / etc / passwd' erneut ausgeführt und das Home-Verzeichnis aktualisiert, jetzt ist alles in Ordnung mit ssh.
Das mag für Linux-Typen mit Sysadmin-Erfahrung offensichtlich sein, aber für diejenigen von uns, die hauptsächlich Windows verwenden, ist es etwas dunkel.
quelle
Ich verwende zufällig cwRsync (Cygwin + Rsync für Windows), wo Cygwin gebündelt geliefert wird, und ich konnte / etc / passwd nicht finden.
Und es sagte immer wieder
Also habe ich eine Batch-Datei geschrieben, die die HOME-Variable geändert hat, bevor ich rsync ausgeführt habe. Etwas wie:
Und Bratsche! Der Ordner .ssh wurde im aktuellen Arbeitsverzeichnis angezeigt und rsync hat aufgehört, mit rsa-Fingerabdrücken zu nerven.
Es ist ein schneller Hotfix, aber später sollten Sie HOME an einen sichereren Ort ändern.
quelle