我已经把这个答案读了大约八五遍了,但是有一些我不能正确理解的东西:
git-upload-pack: command not found, how to fix this correctly
当我尝试在我的服务器上克隆一个存储库时,我得到了以下信息:
bash: git-upload-pack: command not found
但是,当我通过给克隆提供-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
所以现在我很困惑。
我需要做些什么才能避免每次都使用-u /usr/local/bin/git-upload-pack
选项?为什么ssh you@remotemachine echo \$PATH
不返回/usr/local/bin
?这是否与登录和非登录shell有关?
请帮帮我!提前谢谢。
发布于 2012-06-28 22:59:50
这与此问题有关:
https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh
在没有进入交互模式的情况下发送命令时,默认情况下Ssh不会加载您的环境。
好的解决方案是使用.ssh/environment文件:
在/etc/ssh/sshd_config中添加:
PermitUserEnvironment yes
然后只需创建.ssh/目录并将环境转储到.ssh/enviroment:
cd ~/
mkdir .ssh
env > .ssh/environment
重新启动SSH
/etc/init.d/sshd restart
现在,当您从本地计算机执行此操作时:
ssh you@server.com "which git-upload-pack"
你会得到
/usr/local/bin/git-upload-pack
git克隆就行了。
发布于 2012-06-21 05:31:23
是的,它与登录shell和非登录shell有关。.bashrc
文件仅在非登录shells中加载。您可以使用.bash_profile
作为登录shells。只需将相同的修改添加到.bash_profile
文件中的PATH
中,就可以了。
export PATH=/usr/local/bin:$PATH
发布于 2014-08-21 15:36:52
在我的例子中,我通过登录到远程机器,一个Ubuntu机器,并执行sudo apt-get install git
解决了这个问题。我不确定这是不是太夸张了,但我马上就解决了这个问题。
https://stackoverflow.com/questions/11128464
复制相似问题