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)
在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为您的用户名)?