UWAGA: Proszę zobaczyć moją drugą edycję poniżej, aby uzyskać aktualizację problemu.
Cygwin pracował dla mnie dobrze do zeszłego tygodnia. Teraz .bashrc nie jest pozyskiwany. Musiałem coś zainstalować lub coś zmienić, ale nie pamiętam dokładnie, co spowodowało problem. Kiedy uruchamiam Cygwin, jestem w domu Windows i żaden z moich aliasów nie działa. Muszę ręcznie pobrać .bashrc. Oto mój Cygwin.bat:
@echo off
C:
chdir C:\cygwin\bin
set CYGWIN=tty notitle glob
bash --login -i
Jakieś pomysły?
EDYCJA: Mój plik .bash_profile zawiera następujące elementy,
# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
source "${HOME}/.bashrc"
fi
EDYCJA 2: WAŻNE! Kiedy uruchomiłem Cygwin, zaczyna się on w moim katalogu domowym Windows. Próbowałem umieścić mój .bash_profile i .bashrc w tym folderze i zostały one pozyskane poprawnie! Oznacza to, że problem został zredukowany do wyjaśnienia, dlaczego Cygwin uruchamia się w folderze domowym systemu Windows, a nie w zwykłym folderze domowym Cygwin.
EDYCJA 3: Wyniki działania 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
drukuje?/cygdrive/c/Users/foo
zamiastC:\Users\foo
)HOME=/home/yourname bash -l
monit w terminalu? Jeśli mam rację, powinno to dać ci poprawnie działającą powłokę. Zauważ, że jest to diagnostyczne lub w najlepszym razie obejście, a nie rozwiązanie; musimy$HOME
przede wszystkim dowiedzieć się, dlaczego twój błąd jest nieprawidłowy. Podstawowym problemem jest nieprawidłowe ustawienie$HOME
; bash zachowuje się poprawnie.Odpowiedzi:
Cygwin FAQ wyjaśnia, jak
$HOME
jest ustawiony:Domyślam się, że popsułeś
/etc/passwd
plik. (Katalog główny systemu Windows%USERPROFILE%
nie jest%HOME%
.)Co
grep USERNAME /etc/passwd
drukuje (zastępującUSERNAME
swoją nazwę użytkownika)?źródło
set HOME=
? Korzystanie z panelu sterowania systemu jest bardziej prawdopodobne, ale nawet wtedy może być konieczne ponowne uruchomienie.Jeśli masz profil .profile lub .bash_profile, jest on pozyskiwany z powłok logowania, a otrzymujesz powłokę logowania od momentu przejścia
--login
. Jeśli źródło .profile, bash nie będzie źródła .bashrc.Spróbowałbym umieścić:
w swoim .profile sprawdź, czy to pomoże. Twój .bashrc powinien nadal być pozyskiwany, jak zwykle, w innych wywołaniach powłoki bez logowania.
I nie przechodź
-i
do bashu; nie potrzebujesz tego. Bash to rodzaj hacków, które udają, że dałeś-i
w wierszu poleceń.źródło
-i
to nie jest konieczne. Dzięki.-i
z wiersza poleceń. Spróbuj otworzyć okno powłoki bash, a następnieecho $-
powinieneś zobaczyći
(między innymi inne flagi)Doświadczyłem tego samego zachowania - prawdopodobnie po zainstalowaniu git (Windows).
W ustawieniach systemu znalazłem zmienną użytkownika HOME = C: \ Users \ me i zresetowałem ją do HOME = D: \ home
źródło