Cygwin找不到/.bashrc

时间:2014-09-22 09:33:50

标签: windows bash cygwin .bash-profile

我在Windows 7 64位上安装了Cygwin,我在/.bashrc位置的位置是C:/cygwin64/home/admin/bashrc,但我无法从Cygwin看到它,它说:

  

bash:/.bashrc:没有这样的文件或目录

我尝试使用以下命令导航到该文件夹​​:

cd /cygdrive/c/cygwin64/home/admin/

然后使用:

/.bashrc

但它说:

  

没有这样的文件或目录

如何查看该文件?

3 个答案:

答案 0 :(得分:2)

我的Cygwin安装遇到了同样的问题。

  

CYGWIN_NT-6.1 2.5.2(0.297 / 5/3)x86_64 Cygwin

我在我的(cygwin)主目录中创建了一个〜/ .bashrc文件,但我设置的别名不起作用。

问题是我的主目录中没有〜/ .bash_profile文件。它必须包含以下行才能识别所需的.bashrc

. ~/.bashrc

我通过追加所需的行

来创建它
echo ". ~/.bashrc" >> ~/.bash_profile

请参阅StackOverflow > Cygwin shell doesn't execute .bashrc

答案 1 :(得分:0)

找到你的$HOME并试试这个命令:

cd ~/

ls -la

如果他不存在则创建它。 或者查看这篇文章:Cygwin shell doesn't execute .bashrc

或尝试

cat ~/.bashrc

答案 2 :(得分:0)

只需澄清一下:这与Cygwin无关。这是正常的Bash行为。

〜/ .profile / bin / sh 最初使用的登录脚本文件名。

〜/ .bash_profile :为登录shell执行的个人初始化文件

〜/ .bashrc :每个单独的交互式shell启动文件。

每个新的Cygwin窗口(每次调用 Cygwin.bat )都会打开一个登录外壳程序,因为没有 init 进程,并且您已经以Windows用户身份登录。在 Cygwin.bat 中,Bash的调用方式为:bash --login -i

因为--login会执行〜/ .bash_profile 。更具体地说,Bash读取 / etc / profile ,然后读取〜/ .bash_profile 〜/ .bash_login 〜/ .profile ,并按照该顺序执行第一个可读的代码。

由于-i也应执行〜/ .bashrc 。但这不是因为Bash仅针对交互式和非登录的Shell执行 .bashrc

请注意,bash --login -i --rcfile=C:/Cygin/home/%USERNAME%/.bashrc也不起作用,因为在登录shell的情况下,--rcfile会被忽略。

因此,在有一个真正的登录shell(文本登录shell)的情况下,挂钩 $ HOME / .bashrc 是一个很好的做法。这就是许多 .bash_profile 文件包含以下行的原因:

if [ -f "${HOME}/.bashrc" ]; then
    source "${HOME}/.bashrc"
fi

当您将ssh / telnet到主机,将Linux引导至文本模式或...运行 Cygwin.bat 时,会出现文本登录Shell。

到目前为止,我想补充一点。在启动过程中,许多Linux桌面会自动由Display-Manager读取〜/ .profile (不是〜/ .bash_profile 〜/ .bash_login )。进程桌面会话。因此也将〜/ .bashrc 钩在〜/ .profile 中:

if [ -n "$BASH_VERSION" ]; then
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

由于Bash在没有〜/ .bash_profile 的情况下执行〜/ .profile ,因此您可能只使用〜/ .profile 。 / p>

现在,您可以在〜/ .bashrc 中进行所有自定义。