2013-03-06 2 views
2

을 통해 실행 파일을 이눔 내 ~/.ssh/config :자식 설정 원격 경로가 내가이를 사용하여 원격 컴퓨터에 SSH를 통해 연결 ssh를

Host myserver 
    User myusername 
    ProxyCommand ssh myserver2 exec nc myserver 22 

하지만 원격 Git 저장소를 끌어하려고 할 때, 나는이 오류를 얻을 :

% git pull myserver:~/mygitrepository 
zsh:1: command not found: git-upload-pack 
fatal: The remote end hung up unexpectedly 

문제는 내 git 실행 파일이 $ PATH에 정의 된 표준 경로에 없다는 것입니다. 원격 시스템에서 :

% ssh myserver "env | grep PATH" 
PATH=/usr/local/bin:/bin:/usr/bin 

SSH를 .zshrc 또는 .bashrc와의 원격 PATH 정의를 읽지 않습니다 :

% which git-upload-pack 
/c5/shared/git/1.7.6/bin/git-upload-pack 

및 로컬 컴퓨터에

. ssh를 통해 실행 파일을 git하기 위해 PATH를 어떻게 정의 할 수 있습니까?

+0

ssh는 연결을 만들기 때문에 PATH 정의를 읽지 않습니다. 이것은 사용자 쉘이 아닙니다. 실제로 zsh을 비난하는 문제가 있습니다. (.zshrc를 읽지 않으면) 또는 .zshrc에 PATH 추가를 실제로 추가해야합니다. –

+0

실제로 ssh는 사용자 구성 파일 (.zshrc)을 읽지 않습니다. zshrc 또는 .bashrc) ssh가 인수에서 명령과 함께 시작될 때. PATH 변수는 이미 내 .zshrc에 정의되어 있고 ssh를 통해 대화식 세션에 연결될 때 git가 올바르게 작동합니다. – bougui

+0

그러면 PATH 정의를 해당 명령에 추가 할 수 있습니다. (또는 .zshrc를'source '하는 것) –

답변

2

사실 내 대답은 here입니다. 한 가지 해결책은 클라이언트에서

git pull --upload-pack=/c5/shared/git/1.7.6/bin/git-upload-pack myserver:~/mygitrepository 

을 사용하여 업로드 팩 경로를 설정하는 것입니다.

관련 문제