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之间区别的有趣文章.
| 归档时间: |
|
| 查看次数: |
33627 次 |
| 最近记录: |