HINWEIS: Eine Aktualisierung des Problems finden Sie in meiner zweiten Bearbeitung unten.
Cygwin hat bis letzte Woche gut für mich gearbeitet. Jetzt wird .bashrc nicht mehr beschafft. Ich muss etwas installiert oder geändert haben, kann mich aber nicht genau erinnern, was das Problem verursacht hat. Wenn ich Cygwin starte, bin ich in meinem Windows-Heim und keiner meiner Aliase funktioniert. Ich muss .bashrc manuell beschaffen. Das Folgende ist meine Cygwin.bat:
@echo off
C:
chdir C:\cygwin\bin
set CYGWIN=tty notitle glob
bash --login -i
Irgendwelche Ideen?
BEARBEITEN: Mein .bash_profile enthält Folgendes:
# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
source "${HOME}/.bashrc"
fi
EDIT2: WICHTIG! Wenn ich Cygwin gestartet habe, wird es in meinem Windows-Startordner gestartet. Ich habe versucht, mein .bash_profile und .bashrc in diesen Ordner zu legen, und sie wurden korrekt bezogen! Dies bedeutet, dass das Problem darauf reduziert wurde, herauszufinden, warum Cygwin im Windows-Basisordner und nicht im normalen Cygwin-Basisordner gestartet wird.
EDIT3: Ergebnisse der Ausführung von grep Gulshan / etc / passwd /
$ grep Gulshan /etc/passwd
Administrator:unused:500:513:U-Gulshan-HP\Administrator,S-1-5-21-1235613160-4193452482-2032876723-500:/home/Administrator:/bin/bash
Guest:unused:501:513:U-Gulshan-HP\Guest,S-1-5-21-1235613160-4193452482-2032876723-501:/home/Guest:/bin/bash
Gulshan:unused:1000:513:U-Gulshan-HP\Gulshan,S-1-5-21-1235613160-4193452482-2032876723-1000:/home/Gulshan:/bin/bash
echo $HOME
gedruckt, wenn Ihre Bash-Shell gestartet wird (und Sie in Ihr Windows-Ausgangsverzeichnis versetzt) ?/cygdrive/c/Users/foo
anstattC:\Users\foo
)HOME=/home/yourname bash -l
an der Terminal-Eingabeaufforderung eingeben? Wenn ich recht habe, sollte dies Ihnen eine ordnungsgemäß funktionierende Shell geben. Beachten Sie, dass dies eine Diagnose oder bestenfalls eine Problemumgehung ist, keine Lösung. Wir müssen noch herausfinden, warum Ihre überhaupt$HOME
falsch ist. Das Grundproblem ist die falsche Einstellung von$HOME
; Bash verhält sich richtig.Antworten:
In den Cygwin-FAQ wird erklärt, wie
$HOME
eingestellt wird:Ich gehe davon aus, dass Sie Ihre
/etc/passwd
Datei durcheinander gebracht haben . (Das Windows-Ausgangsverzeichnis ist%USERPROFILE%
nicht%HOME%
.)Was bedeutet
grep USERNAME /etc/passwd
Drucken (durchUSERNAME
Ihren Benutzernamen ersetzen )?quelle
set HOME=
? Die Verwendung des Systembedienfelds funktioniert eher, aber selbst dann ist möglicherweise ein Neustart erforderlich.Wenn Sie ein .profile oder .bash_profile haben, wird dieses auf Login-Shells bezogen, und Sie erhalten seit dem Bestehen eine Login-Shell
--login
. Wenn Sie .profile als Quelle verwenden, gibt bash .bashrc nicht als Quelle.Ich würde versuchen zu sagen:
Überprüfen Sie in Ihrem .profile, ob dies hilfreich ist. Ihre .bashrc sollte weiterhin wie gewohnt in anderen Nicht-Login-Shell-Aufrufen bezogen werden.
Und geh nicht
-i
zu Bash über; du brauchst es nicht Bash Art von Hacks, die so tun, als hätten Sie-i
auf der Kommandozeile gegeben.quelle
-i
das nicht notwendig ist. Vielen Dank.-i
in der Befehlszeile angegeben. Versuchen Sie, ein Bash-Shell-Fenster zu öffnen, dannecho $-
sollten Siei
(unter anderem Flaggen) sehenIch habe das gleiche Verhalten erlebt - wahrscheinlich nachdem git (Windows) installiert wurde.
In der Systemeinstellung habe ich die Benutzervariable HOME = C: \ Users \ me gefunden und auf HOME = D: \ home zurückgesetzt
quelle