ПРИМЕЧАНИЕ. Пожалуйста, ознакомьтесь с моим вторым редактированием ниже для получения обновленной информации о проблеме.
Cygwin работал хорошо для меня до прошлой недели. Теперь .bashrc не получает источник. Я, должно быть, установил что-то или изменил что-то, но я не могу точно вспомнить, что вызвало проблему. Когда я запускаю Cygwin, я нахожусь в моем доме Windows, и ни один из моих псевдонимов не работает. Я должен вручную источник .bashrc. Вот мой Cygwin.bat:
@echo off
C:
chdir C:\cygwin\bin
set CYGWIN=tty notitle glob
bash --login -i
Любые идеи?
РЕДАКТИРОВАТЬ: мой .bash_profile содержит следующее,
# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
source "${HOME}/.bashrc"
fi
EDIT2: ВАЖНО! Когда я запускал Cygwin, он запускался в моей домашней папке Windows. Я попытался поместить мои .bash_profile и .bashrc в эту папку, и они были получены правильно! Это означает, что проблема сводится к выяснению, почему Cygwin запускается в домашней папке Windows, а не в обычной домашней папке Cygwin.
РЕДАКТИРОВАТЬ 3: Результаты выполнения 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
печатает?/cygdrive/c/Users/foo
а неC:\Users\foo
)HOME=/home/yourname bash -l
в терминале? Если я прав, это должно дать вам правильно работающую оболочку. Обратите внимание, что это диагностика или, в лучшем случае, обходной путь, а не решение; нам все еще нужно выяснить, почему вы$HOME
в первую очередь неверны. Основная проблема заключается в неправильной настройке$HOME
; Баш ведет себя правильно.Ответы:
Cygwin FAQ объясняет , как
$HOME
установлено:Мое лучшее предположение, что вы испортили свой
/etc/passwd
файл. (Домашний каталог Windows есть%USERPROFILE%
, а не%HOME%
.)Что
grep USERNAME /etc/passwd
печатает (заменяетUSERNAME
ваше имя пользователя)?источник
set HOME=
? Использование панели управления системой, скорее всего, сработает, но перезагрузка может потребоваться даже тогда.Если у вас есть .profile или .bash_profile, это происходит из оболочек входа в систему, и вы получаете оболочку входа в систему с момента прохождения
--login
. Если вы используете источник .profile, то bash не будет источником .bashrc.Я бы попробовал поставить:
в вашем .profile, посмотрите, поможет ли это. Ваш .bashrc должен по-прежнему поступать, как обычно, в других вызовах оболочки без входа в систему.
И не переходи
-i
на Баш; тебе это не нужно Bash виды хаков, которые притворяются, что вы дали-i
в командной строке.источник
-i
это не обязательно. Спасибо.-i
в командной строке. Попробуйте открыть окно оболочки bash, тогдаecho $-
вы должны увидетьi
(среди, возможно, других флагов)Я испытал такое же поведение - вероятно, после установки git (Windows).
В настройках системы я нашел пользовательскую переменную HOME = C: \ Users \ me и сбросил ее на HOME = D: \ home.
источник