Git Post接收cd没有这样的文件或目录
我有一个Git Post接收cd没有这样的文件或目录,git,bash,githooks,Git,Bash,Githooks,我有一个post receive钩子,在这个钩子中,我根据被推送的分支执行一些git签出。在继续执行更多业务逻辑之前,我需要将工作目录更改为存储在变量中的目录。然而,我不断得到一个“没有这样的文件或目录”的错误,尽管目录存在 #!/bin/sh dir=/home/username/directory cd $dir git文件夹本身位于/home/username/git/project 我希望使用完全限定的路径(此路径是固定的,git目录可以在任何地方)尽可能保持cd命令的通用性,因此请
post receive
钩子,在这个钩子中,我根据被推送的分支执行一些git签出。在继续执行更多业务逻辑之前,我需要将工作目录更改为存储在变量中的目录。然而,我不断得到一个“没有这样的文件或目录”的错误,尽管目录存在
#!/bin/sh
dir=/home/username/directory
cd $dir
git文件夹本身位于/home/username/git/project
我希望使用完全限定的路径(此路径是固定的,git目录可以在任何地方)尽可能保持cd命令的通用性,因此请不要使用cd.././directory
stuff
有人知道为什么这不起作用吗?路径中有空间吗?
cd“$dir”
效果更好吗?嗯?完全限定路径是最不通用的,因为它只适用于单个位置;相对路径意味着您可以重新定位子树并使代码仍能工作,只要相关组件彼此保持在相同的位置。无论如何,set-x
是您的朋友。如果文件中有隐藏字符(例如,一个离群的DOS换行符),它将显示在set-x
output中。但首先,添加缺少的引号。@charlesduff抱歉,我对“通用”部分的表述有点不正确。声明变量中的路径在整个脚本中始终是固定的。通过说generic,我希望能够使用set-x
将post-receive脚本放在服务器的任何git目录中(因此没有../.stuff)@CharlesDuffy,这似乎是cd试图调用的路径:/home/username/directory\342\200\250
。。。