Você pode tentar iniciar o comando através de um bash usando o comando -l para que ele funcione como um shell de login
ssh user@server "bash -l -c 'which svnserve'"
Como observado nos comentários que deixei acima, você precisará escapar de todos os $, para que as variáveis sejam expandidas no servidor e não localmente. Por exemplo:
ssh user@server "bash -l -c 'echo \$PATH'"
update:
Em relação à sua pergunta sobre por que o .ssh / environment não entra em vigor, acredito que a configuração padrão do SSHd seria ignorar os ambientes do usuário. Você precisa ativá-lo especificamente em / etc / ssh / sshd_config (ou similar) e adicionar:
PermitUserEnvironment yes
atualização 2:
Se você não tem acesso ao / etc / ssh / sshd_config, uma solução possível (mas não ideal) seria usar autenticação de chave pública para iniciar o svnserve no login.
Veja link
Observe que isso afetará sua capacidade de fazer login normalmente via SSH. Para fazer isso, você precisa ignorar a autenticação da chave pública:
svn -o PubkeyAuthentication=no user@server