当我运行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
。