如何使用带有自定义 bashrc 的 Git bash 运行脚本?
Posted
技术标签:
【中文标题】如何使用带有自定义 bashrc 的 Git bash 运行脚本?【英文标题】:How to run a script with Git bash with custom bashrc? 【发布时间】:2014-04-11 17:13:45 【问题描述】:我试图让一个 bash 脚本在 git bash 中运行,同时指定一个与我的主目录中的不同的 .bashrc(或根本没有),但事实证明这是一项不可能完成的任务。
据我了解,这应该可行:
"C:\Program Files (x86)\Git\bin\sh.exe " --rcfile .bashrc --login -i C:/Scripts/myscript.sh
但是,无论我尝试什么,要么 --rcfile 文件标志将被完全忽略,要么脚本将出现解析错误,因为它没有被 bash 解析。
以下是我的发现:
--login 标志需要让脚本被 bash 而不是 windows 命令提示符解析 --rcfile 和--norc 如果使用--login 标志,将被完全忽略我已经尝试了我想到的所有可能的组合,包括在我的 .bashrc 文件中调用脚本、交换标志、使用 -c 标志运行脚本命令以及交换我的 .bashrc 文件以尝试使用 - -norc 标志。
这只是 Windows 的糟糕 bash 实现的结果还是我做错了什么?
感谢您对此事的任何帮助。
【问题讨论】:
【参考方案1】:您可以尝试在脚本myscript.sh
中获取您的.bashrc
。
source .bashrc
或者
. .bashrc
【讨论】:
谢谢,但它仍然运行我原来的 .bashrc【参考方案2】:据我所知,-i
标志被您提供了一个供bash
运行的脚本这一事实所覆盖。您的外壳实际上不是交互式的,因此 --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 用于其他事情,你不能使用它。
好的,我明白你的意思了。我设法创建了一个 .bash_profile ,它检查当前目录中是否存在 .bashrc 文件,并从主目录中获取该文件,但问题是,如果主目录中的文件名为 .bashrc,它当我启动 shell 时总是尝试使用它,所以我不得不给它起个不同的名字,所以只有 .bash_profile 中的代码运行。发生这种情况有什么原因吗?以上是关于如何使用带有自定义 bashrc 的 Git bash 运行脚本?的主要内容,如果未能解决你的问题,请参考以下文章
配置开机自启命令文件~/.bashrc/etc/profile/etc/bash.bashrc的异同(bashrc:Bash Run Commands)
配置开机自启命令文件~/.bashrc/etc/profile/etc/bash.bashrc的异同(bashrc:Bash Run Commands)