Estou respondendo, pois finalmente descobri o segredo. Nem a -topção for sshnem a -lopção for bashlevarão o shell de login por conta própria - mas em combinação elas funcionam.
ssh user@host.com -t 'cd /some/where; FOO=BAR NUMBER=42 bash -l'muda as variáveis de ambiente do diretório, sets, e depois começa shell de login adequada (a única diferença que eu encontrei até agora é que /etc/motdnão é exibido desta forma - é normalmente ssh's ou loginresponsabilidade' s, não bash's - outras de que tudo parece para funcionar perfeitamente, e todas as variáveis ambientais são idênticas).
Essas alterações de ambiente / diretório acontecem após o ssh, portanto, não são restritas por PermitUserEnvironmente configurações relacionadas (exatamente como planejado), mas antes .bashrc/ .profilesão executadas. Isso tem vantagens e desvantagens - é mais difícil substituir algo que é definido a partir de scripts bash init PS1, mas é mais fácil sshincluir exatamente os valores certos nas linhas de comando e .profilefazer todo o trabalho pesado.
E se realmente necessário, é realmente muito fácil fazer com que o bash execute algo depois .profilecom uma linha de comando como ssh user@foo.com -t 'cd /mnt; echo ". ~/.bash_profile; PS1=\"\\h-\w \"" >~/xxx; bash --init-file ~/xxx'- muito feia quando colocada dessa maneira, mas esses .profilearquivos alternativos podem ser preparados antes. (até onde eu sei) bashtem alguns locais candidatos para .profilescript e executará o primeiro encontrado - . filenão possui fallbacks automáticos, então você precisará verificar onde está o normal, profilese quiser fazer isso)