运行“Cygwin.bat”时运行“bash”(.bash_profile与.bashrc)

当我运行Cygwin.bat我得到了我所有的自定义的东西,从.bash_profile工作,但是当我只是运行bash没有我的东西从.bash_profile正在工作,我只是得到有线前缀像root@comp:/mnt/c/cygwin64# (如我目前的目录)

运行Cygwin.bat时,有什么办法可以达到同样的效果Cygwin.bat

Cygwin.bat的内容是:

 @echo off C: chdir C:\Tools\cygwin64\bin bash --login -i 

正如@matzeri在注释中指出的那样,cygwin.bat使用--login选项调用bash ,创建一个交互式登录shell 。 而没有--login选项的bash会创建一个不是登录shell交互式 shell

根据bash 手册页 :

当bash作为交互式登录shell或者作为具有--login选项的非交互式shell调用时,它首先从文件/etc/profile读取和执行命令(如果该文件存在)。 读取该文件后,它将按照该顺序查找~/.bash_profile~/.bash_login~/.profile ,并从第一个存在并读取的第一个中读取和执行命令。 当shell开始禁止这种行为时,可以使用--noprofile选项。

当一个不是登录shell交互式shell被启动时,如果该文件存在,bash将读取并执行~/.bashrc命令。 这可以通过使用--norc选项来禁止。 --rcfile文件选项将强制bash从文件读取并执行命令,而不是~/.bashrc

我的~/.bash_profile只有一行:

 source ~/.bashrc 

我把所有conf都放在~/.bashrc