运行'Cygwin.bat'和运行'bash'时的区别(.bash_profile vs. .bashrc)

时间:2017-05-12 11:48:11

标签: windows bash cygwin

当我正在运行Cygwin.bat时,我的所有自定义内容都来自.bash_profile,但是当我刚刚运行bash时,我.bash_profile的任何内容都没有工作,我只是有root@comp:/mnt/c/cygwin64#的有线前缀(作为我当前的目录)

运行bash时是否有任何方法可以获得相同的结果{}运行Cygwin.bat

Cygwin.bat的内容是:

@echo off

C:
chdir C:\Tools\cygwin64\bin

bash --login -i

1 个答案:

答案 0 :(得分:2)

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

根据bash man page

  

当bash作为交互式登录shell 或作为非交互式调用时   shell 使用--login选项,它首先从中读取并执行命令   文件/etc/profile,如果该文件存在。阅读该文件后,它   按顺序查找~/.bash_profile~/.bash_login~/.profile,以及   读取并执行存在且可读的第一个的命令。   启动shell以禁止此操作时,可以使用--noprofile选项   行为。

     

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

我的~/.bash_profile只有一行:

source ~/.bashrc

我将所有内容放在~/.bashrc