如何在Git bash中使用自定义bashrc运行脚本?

4
我正在尝试在Git Bash中运行bash脚本,同时指定一个不同的.bashrc文件(或者没有文件),但是这似乎是一项不可能的任务。
据我所知,应该按如下方式操作:
"C:\Program Files (x86)\Git\bin\sh.exe " --rcfile .bashrc --login -i C:/Scripts/myscript.sh
然而,无论我尝试什么,--rcfile 文件标记要么完全被忽略,要么脚本会出现解析错误,因为它没有被bash解析。
以下是我的发现:
--login标记需要使脚本由bash解析,而不是Windows命令提示符。
如果使用--login标记,则--rcfile和--norc标记将被完全忽略。
我已经尝试了我认为的每种可能的组合,包括在我的.bashrc文件中调用脚本,交换标记,使用-c标记来运行脚本命令,并交换我的.bashrc文件以尝试使用--norc标记。
这只是Windows上糟糕的bash实现结果,还是我做错了什么?
任何关于此事的帮助都将不胜感激。
2个回答

2
您可以尝试在脚本myscript.sh中引用您的.bashrc文件。
source .bashrc

或者
. .bashrc

谢谢,但这仍然运行我的原始.bashrc文件。 - Alexandre Thenorio

1
据我所知,提供一个要运行的脚本会覆盖-i标志。你的shell实际上并不是交互式的,因此--rcfile被忽略了。唯一的方法是使用非交互式登录shell来同时运行脚本和源文件;但是,在这种情况下,你只能使用.bash_profile.bash_login.profile中找到的第一个文件:
bash --login myscript.sh

没有--loginfile来覆盖在myscript.sh之前源文件的选择。


更新:我忘记了 BASH_ENV

export BASH_ENV=.bashrc
bash myscript.sh

我不知道你应该如何在Git bash中将BASH_ENV添加到你的环境变量中。


也许可以简单地使用Windows的set命令;但是它的范围是当前会话(我想;或者可能只是未记录的),因此如果您还要使用Bash进行其他操作,则不能使用该命令。 - tripleee
好的,我明白你的意思了。我已经成功创建了一个 .bash_profile 文件,它会检查当前目录中是否存在 .bashrc 文件,并将其作为源文件,否则就使用主目录中的 .bashrc 文件。然而问题在于,如果主目录中的 .bashrc 文件被命名为 .bashrc,那么每次启动 shell 时它都会尝试使用该文件,因此我不得不将其命名为其他名称,以便只运行 .bash_profile 中的代码。这是有什么原因吗? - Alexandre Thenorio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接