Git alias无法找到bash脚本文件,尽管它位于路径中
我想使用git别名从git bash shell调用bash函数,因此我将.gitconfig设置为:Git alias无法找到bash脚本文件,尽管它位于路径中,git,bash,path,alias,git-bash,Git,Bash,Path,Alias,Git Bash,我想使用git别名从git bash shell调用bash函数,因此我将.gitconfig设置为: [alias] jjj = "!f() { source "test_script.sh"; foo $@; }; f;" st = status 我的test_script.sh在 /c/Users/myname/scripts/ test_script.sh文件如下所示: #!/bin/bash function foo { echo "This is a t
[alias]
jjj = "!f() { source "test_script.sh"; foo $@; }; f;"
st = status
我的test_script.sh在
/c/Users/myname/scripts/
test_script.sh文件如下所示:
#!/bin/bash
function foo {
echo "This is a test script, calling foo!!!";
}
我的路径如下所示:
/c/Users/myname/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/myname/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/Program Files/nodejs:/cmd:/c/Program Files (x86)/Brackets/command:/c/Program Files/Java/jdk1.8.0_111/bin:%APPDATA%/../Local/Android/sdk/platform-tools:/c/Users/myname/scripts:/c/Users/myname/AppData/Roaming:/c/Users/myname/scripts:/usr/bin/vendor_perl:/usr/bin/core_perl:/c/Users/myname/scripts
运行时我得到的:git jjj
是:
f() { source 'test_script.sh' && foo $@; }; f;: line 0: source: test_script.sh: file not found
尽管我的path env变量中有test_script.sh文件的路径,但仍会出现此错误。
请注意,当我从任何地方运行test_script.sh时,我成功地触发了test_script.sh
Q:我如何解决这个问题,或者更好地调试它?这简直让我受不了香蕉三明治
我的设置是:
- 操作系统:Windows 10
- Git版本:2.11.0.windows.1
echo$PATH;shopt源路径
这将检查您的PATH
,如果source
允许使用它(请参阅:如果shopt
内置命令的sourcepath
选项已关闭,则不会搜索PATH
)
如注释中所示,路径未导出(因此子进程(如别名生成的子进程)未继承所述变量)
在.bashrc
中添加它(export PATH=…
)是不够的
查看“”和,您需要一个
%USERPROFILE%\.bash\u profile
来查找.bashrc
我不“做”Windows,因此不确定Windows 10上有什么,但此错误的特征是使用/bin/sh
运行bashsource
命令,而该命令没有source
命令。您可以使别名与Unix/Linux系统上的sh
兼容,或与/bin/bash
一起运行。不确定在Windows上可以执行什么操作。是否可以在git bash中运行源代码“test\u script.sh”
?它有用吗?如果没有-错误是什么?为什么不{source”/path/to/test\u schipt.sh“…
?感谢您提出了一种调试此命令的方法。让git别名运行此命令会显示一个不包含包含脚本的文件夹的路径。顺便说一句,shopt soucepath处于“打开”状态。我做错了什么?我如何不断地将mt脚本文件夹添加到此红色的“git路径”中?键入导出路径=…
(您的所有路径,包括脚本文件夹)后是否可以尝试相同的别名是的,让git别名将我想要的文件夹添加到红色的“git路径”中有效。因此,对于调用该脚本的每个别名,我都需要导出路径并添加文件夹?听起来很奇怪,我可以接受,但我很高兴知道另一种方法来不断地将我的文件夹添加到此Git路径,而不是在执行Git时添加command@Mercury否:我的目的是检查路径是否已导出(即所有进程都将继承它)或者不需要。您只需要将导出添加到%USERPROFILE%\.bashrc
,以使任何bash进程都考虑到正确的路径。包括您的别名。问题是,我正在导出文件夹并将其添加到.bashrc中。my.bashrc看起来像:导出路径=$PATH:/c/Users/guylevy/scripts
,单独使用它将不会影响您的工作ot影响这个GIT路径,它就像GIT不注意一样。