Cygwin shell不执行.bashrc

时间:2012-03-22 03:13:20

标签: shell cygwin

启动cygwin shell后,它只是位于一个错误的家庭目录中:

xfire@codingme.com ~
$ pwd
/cygdrive/c/Users/xfire

但它曾经是/ home / xfire

xfire@codingme.com /etc
$ cat passwd | grep xfire
xfire:unused:22773:10513:U-CORP\xfire,S-1-5-21-527237240-725345543-682003330-12773:/home/xfire:/bin/bash

并且/ home / xfire中的.bashrc没有被执行,即使我将它复制到/ cygdrive / c / Users / xfire,它也不起作用!

5 个答案:

答案 0 :(得分:34)

在cygwin上,我将其添加到我的~/.bash_profile

. ~/.bashrc

答案 1 :(得分:9)

某些程序在Windows注册表中添加“HOME”环境并将值设置为“C:\ Users \ xfire”,这就是为什么cygwin将该目录作为主目录。 cygwin.com/faq-nochunks.html

答案 2 :(得分:3)

在我的cygwin版本中,我发现只有~/.profile被抢救,所以添加了

if [ -e "${HOME}/.bash_profile" ]; then
    source "${HOME}/.bash_profile"
fi

.profile文件。我的.bash_profile文件包含.bashrc的另一个测试,并从那里执行。我还在我的.bashrc文件中添加了以下两行。

export BASH_ENV="${HOME}/.profile"
export ENV="${HOME}/.profile"

第一个确保.profile在非交互式终端中执行,第二个确保它在POSIX终端中执行。我找到了一个非常有用的解释,说明了什么运行以及何时进入Bash Reference Manual

在您的情况下,由于您的HOME环境变量的值存在问题,因此无法提供帮助,但在搜索此问题时此列表在列表中显得相当高。

答案 3 :(得分:1)

您还可以设置BASH_ENV变量,例如,BASH_ENV ='C:\ DOCUME~1 \ dwyttenb \ .bashrc'

答案 4 :(得分:0)

在返回初始命令提示符之前,先执行

~/.bash_profile。之后,每次打开新的外壳程序时,都会执行~/.bashrc

. ~/.bashrc的末尾添加~/.bash_profile已解决了该问题。

现在您可以使用alias命令检查现有别名。

找到有关github的更多详细信息。