找不到git-upload-pack:命令

Chr*_*ris 22 git bash shell command-line

我已经阅读了大约八五次这个答案了,但有一些我不能正确理解的东西:

找不到git-upload-pack:命令,如何正确解决这个问题

当我尝试在我的服务器上克隆存储库时,我得到以下内容:

bash: git-upload-pack: command not found
Run Code Online (Sandbox Code Playgroud)

但是当我通过给克隆-u /usr/local/bin/git-upload-pack选项克隆时,一切都很好.

我想这是有道理的,因为那是我服务器上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
Run Code Online (Sandbox Code Playgroud)

所以现在我很困惑.

为避免-u /usr/local/bin/git-upload-pack每次都使用该选项,我需要做什么?为什么不ssh you@remotemachine echo \$PATH回来/usr/local/bin?这与登录和非登录shell有关吗?

请帮忙!提前致谢.

小智 26

这与此问题有关:

https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh

默认情况下,在没有进入交互模式的情况下发送命令时,Ssh不会加载您的环境.

好的解决方案是.ssh/environment文件:

在/ etc/ssh/sshd_config中添加:

PermitUserEnvironment yes
Run Code Online (Sandbox Code Playgroud)

然后只需创建.ssh /目录并将环境转储到.ssh/enviroment:

cd ~/
mkdir .ssh
env > .ssh/environment
Run Code Online (Sandbox Code Playgroud)

重启SSH

/etc/init.d/sshd restart
Run Code Online (Sandbox Code Playgroud)

现在,当您从本地计算机执行此操作时:

ssh you@server.com  "which git-upload-pack"
Run Code Online (Sandbox Code Playgroud)

你会得到的

/usr/local/bin/git-upload-pack
Run Code Online (Sandbox Code Playgroud)

和git clone s'd工作.


Nat*_*eyn 12

是的,它与登录和非登录shell有关.该.bashrc文件仅在非登录shell中加载.您可以使用.bash_profile登录shell.只需PATH.bash_profile文件中添加相同的修改就可以了.

export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

您可能会发现这是一篇关于.bashrc和.bash_profile以及登录和非登录shell之间区别的有趣文章.


Hug*_*ins 6

在我的案例中,我通过登录远程机器、Ubuntu 机器并执行sudo apt-get install git. 不确定这是否矫枉过正,但立即为我解决了问题。