Cygwin .bashrc 不是源,因为 cygwin 从 Windows 主页开始

gsi*_*011 9 cygwin bash bashrc

注意:请参阅下面我的第二次编辑以获取有关该问题的更新。

直到上周,Cygwin 对我来说都很好。现在 .bashrc 没有得到来源。我一定安装了一些东西或改变了一些东西,但我不记得到底是什么导致了这个问题。当我启动 Cygwin 时,我在我的 Windows 家中并且我的别名都不起作用。我必须手动获取 .bashrc。以下是我的 Cygwin.bat:

@echo off

C:
chdir C:\cygwin\bin

set CYGWIN=tty notitle glob

bash --login -i
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:我的 .bash_profile 包含以下内容,

# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi
Run Code Online (Sandbox Code Playgroud)

EDIT2:重要!当我启动 Cygwin 时,它会在我的 Windows 主文件夹中启动。我试着把我的 .bash_profile 和 .bashrc 放在这个文件夹中,它们的来源是正确的!这意味着问题已简化为弄清楚为什么 Cygwin 在 Windows 主文件夹中启动,而不是在正常的 Cygwin 主文件夹中启动。

EDIT3: 运行 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
Run Code Online (Sandbox Code Playgroud)

Kei*_*son 9

Cygwin的常见问题解释了如何$HOME设置:

从 Windows 启动 Cygwin 时,HOME按优先级降序确定如下:

  • HOME 从 Windows 环境,翻译成 POSIX 形式。
  • 进入 /etc/passwd
  • /home/USERNAME

从网络(telnet、ssh、...)使用 Cygwin 时,HOME/etc/passwd.

如果您HOME设置为诸如 之类的值/cygdrive/c,则它很可能是在 Windows 中设置的。启动 DOS 命令窗口并键入set HOME以验证是否是这种情况。

从网络启动时,对共享驱动器的访问通常受到限制,因此域用户可能希望HOME在 Windows 环境中(在共享驱动器上)与在/etc/passwd(在本地驱动器上)不同。请注意,ssh 只考虑/etc/passwd,不考虑 HOME.

我最好的猜测是你搞砸了你的/etc/passwd文件。(Windows 主目录是%USERPROFILE%,而不是%HOME%。)

grep USERNAME /etc/passwd打印什么(替换USERNAME为您的用户名)?