2013-03-06 77 views
2

可執行文件,我在使用這種通過SSH連接到遠程機器我~/.ssh/config混帳設置遠程路徑與git通過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定義的標準路徑中。在遠程機器上:

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

,並在本地機器上:

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

SSH不讀.zshrc或.bashrc中遠程路徑定義。我怎樣才能定義PATH git git可執行文件?

+0

ssh根本不會讀取任何PATH定義,因爲它只是建立連接,它不是你的shell。你實際上遇到了一個問題,你的zsh應該被指責(如果它沒有讀取.zshrc),或者你只需​​要將你的PATH添加到你的.zshrc :) – 2013-03-06 10:10:08

+0

實際上ssh不讀取用戶配置文件(。 zshrc或.bashrc),當ssh使用參數中的命令啓動時。 PATH變量已經在我的.zshrc中定義了,當我通過ssh在交互式會話中連接時,git可以正常工作。 – bougui 2013-03-06 10:17:19

+0

然後您可以簡單地將PATH定義添加到該命令,對吧? (或'源'的.zshrc) – 2013-03-06 10:22:44

回答

2

其實我找到了我的答案here。一種解決方案是在遠程設置上傳包路徑,使用:

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

在客戶端。