我读过这个答案大约八五倍,但有些事我没有正确理解:
混帐上载包装:命令未找到,如何正确地解决这一问题
当我尝试克隆我的服务器上的存储库,我得到如下:
bash: git-upload-pack: command not found
但是,当我通过给克隆的克隆-u /usr/local/bin/git-upload-pack
选项,一切运作良好。
我想这是有道理的,因为这是我的服务器上的混帐上传包的位置。
顶端回答表明我对服务器.bashrc文件需要被更新,以反映这一点,因为结果ssh you@remotemachine echo \$PATH
不回/usr/local/bin
。 (它返回/usr/bin:/bin:/usr/sbin:/sbin
)。
但是,当我看到我的.bashrc文件,它包含:
export PATH=/usr/local/bin:$PATH
所以现在我很困惑。
我需要做什么做避免使用-u /usr/local/bin/git-upload-pack
选项每次? 为什么ssh you@remotemachine echo \$PATH
不回/usr/local/bin
? 这是与登录和非登录shell?
请帮忙! 提前致谢。
这是连接到这个问题:
https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh
而不去交互模式下发送命令时,SSH是默认不加载您的环境。
很好的解决方案是具有的.ssh / environment文件中:
在/ etc / SSH / sshd_config中添加:
PermitUserEnvironment yes
然后,只需创建的.ssh /目录和转储envronment到的.ssh /环境:
cd ~/
mkdir .ssh
env > .ssh/environment
重新启动SSH
/etc/init.d/sshd restart
现在,当你从本地机器做到这一点:
ssh you@server.com "which git-upload-pack"
你s'd得到
/usr/local/bin/git-upload-pack
和Git克隆s'd工作。
是的,这是登录和非登录shell做。 该.bashrc
文件只被加载在非登录shell。 您可以使用.bash_profile
的登录外壳。 就在相同的修改添加到您的PATH
中.bash_profile
文件,你应该是不错的。
export PATH=/usr/local/bin:$PATH
您可能会发现这是对.bashrc中和.bash_profile文件,并登录和非登录shell之间的区别的有趣的文章。
我解决了这个问题,在我的情况下登录到远程计算机,Ubuntu的盒子,做sudo apt-get install git
。 不知道这是矫枉过正与否,但解决了这个问题,我瞬间。
我对这个问题的解决方案
检查路径为您的远程机器上的混帐上传包:
ssh yourname@IP-addressORdomain 'which git-upload-pack'
如果给出了一个路径-将它复制(不git-upload-pack
和斜线的例子: /usr/bin
, /home/yourname/bin
, /whatever/gituploadpack/path
,等等)。
请登录shell时您在远程计算机上PATH:
ssh yourname@IP-addressORdomain 'echo $PATH'
有没有这样的路径( /whatever/gituploadpack/path
),不是吗? 好!
登录到远程机器:
ssh yourname@IP-addressORdomain
打开.bashrc_profile:
nano /home/yourname/.bashrc_profile
发现这些线路如有:
if [ -f ~/.bashrc ]; then ~/.bashrc fi
...并改变它们:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
打开.bashrc中:
nano /home/yourname/.bashrc
添加以下4条线路:
if [ -d "/whatever/gituploadpack/path" ] ; then PATH="$PATH:/whatever/gituploadpack/path" fi export PATH
退出远程机器:
exit
请登录shell时您在远程计算机上PATH:
ssh yourname@IP-addressORdomain 'echo $PATH'
你看到/whatever/gituploadpack/path
? 恭喜!
注意现在你已经解决了,不仅git-upload-pack
的问题,但也git-receive-pack
和你的其他可执行文件/whatever/gituploadpack/path
!
我得到了以下错误: git-credential-osxkeychain died of signal 11
时候我在做的git拉,我会得到fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?
我猜测它与在钥匙串我以前无效的github凭证做。
- 使用命令空间打开钥匙串访问工具
- 在钥匙串访问工具搜索github上
- 删除了所有有关GitHub上的条目(因为我不再需要它)
- 按照设定的git密码缓存部分再次设置混帐
- 有效
柜面任何上述答案没有帮助。