Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$PATH在.bashrc处扩展在git钩子脚本中不可用_Git_Bash - Fatal编程技术网

$PATH在.bashrc处扩展在git钩子脚本中不可用

$PATH在.bashrc处扩展在git钩子脚本中不可用,git,bash,Git,Bash,当在存储库中接收到推送时,我需要运行某个命令。该二进制文件位于我添加到.bashrc的自定义路径上,通常从shell开始工作。我写了一个小脚本作为git钩子。但是,添加的.bashrc似乎不会影响此脚本 我尝试将bash~/.bashrc放在脚本顶部,但没有成功。如果我手动运行脚本,比如说$sh post receive,它就可以正常工作。怎么了?这bash~/.bashrc生成了一个新的shell,它执行名为.bashrc的文件,当该子shell退出时,该子shell中的任何状态都会自然丢失—

当在存储库中接收到推送时,我需要运行某个命令。该二进制文件位于我添加到.bashrc的自定义路径上,通常从shell开始工作。我写了一个小脚本作为git钩子。但是,添加的.bashrc似乎不会影响此脚本


我尝试将
bash~/.bashrc
放在脚本顶部,但没有成功。如果我手动运行脚本,比如说
$sh post receive
,它就可以正常工作。怎么了?

bash~/.bashrc
生成了一个新的shell,它执行名为
.bashrc
的文件,当该子shell退出时,该子shell中的任何状态都会自然丢失——在转到包含调用的实际脚本的第二行之前,它必须这样做。

该脚本可能是以其他用户的身份运行的,或者正在使用禁用交互功能和/或启动脚本的选项进行调用。这是应该的;这里真的没有什么“错”

您可以添加
/home/you/.bashrc
作为一种快速而肮脏的解决方法;或者,更恰当地说,直接修改脚本的路径;或者,更恰当地说,模块化依赖关系,例如,将代码放在一个单独的文件中,您可以从
.bashrc
和这个脚本中获取这些代码,但对于这个孤立的情况,这肯定是过火了

“包含”shell scipt文件的命令称为“源”或“点”;在Bash中,
source
可以作为同义词使用,但在正确的Bourne shell中,它是一个文字点(又称句号,句号):

检查你的.bashrc 在某些发行版中,在交互模式下未执行时跳过脚本的结尾。 把你需要的有用的东西带到跳过的部分

看来:

# If not running interactively, don't do anything
case $- in
  *i*) ;;
  *) return;;
esac

这对于修复作为git
post-update
hook一部分遇到的Jekyll依赖项非常有用。采购
~/。bash_profile
可能是一种肮脏的方法,但考虑到大多数人将如何安装rvm和后续gems,它很容易成为一种跨平台的解决方案。非常感谢!❤️ 这就是我的问题所在
# If not running interactively, don't do anything
case $- in
  *i*) ;;
  *) return;;
esac