Saya menjawab sendiri, karena saya akhirnya menemukan rahasianya. Tidak ada -topsi untuk ssh, maupun -lopsi untuk bashakan mengarah pada shell login sendiri - tetapi dalam kombinasi mereka berfungsi.
ssh user@host.com -t 'cd /some/where; FOO=BAR NUMBER=42 bash -l'perubahan variabel direktori, set lingkungan, dan kemudian mulai shell login yang tepat (satu-satunya perbedaan yang saya temukan sejauh ini adalah bahwa /etc/motdtidak ditampilkan dengan cara ini - itu biasanya ssh's atau login' s tanggung jawab, tidak bash's - selain itu semuanya tampak untuk bekerja dengan sempurna, dan semua variabel lingkungan identik).
Perubahan lingkungan / direktori ini terjadi setelah ssh, sehingga tidak dibatasi oleh PermitUserEnvironmentdan pengaturan terkait (persis seperti yang direncanakan), tetapi sebelum .bashrc/ .profiledijalankan. Ini memiliki kelebihan dan kekurangan - lebih sulit untuk hanya menimpa sesuatu yang akan ditetapkan dari skrip bash init seperti PS1, tetapi lebih mudah untuk mengemas nilai-nilai yang tepat ke dalam sshbaris perintah, dan .profilemelakukan semua pekerjaan berat.
Dan jika benar-benar diperlukan, sebenarnya cukup mudah untuk mendapatkan bash untuk mengeksekusi sesuatu setelah .profiledengan baris perintah seperti ssh user@foo.com -t 'cd /mnt; echo ". ~/.bash_profile; PS1=\"\\h-\w \"" >~/xxx; bash --init-file ~/xxx'- sangat jelek ketika diletakkan seperti itu, tetapi .profilefile-file alternatif ini dapat disiapkan sebelumnya. (Sejauh yang saya tahu bashmemiliki beberapa lokasi kandidat untuk .profileskrip dan akan menjalankan yang pertama ditemukan - . filetidak memiliki cadangan otomatis seperti itu, jadi Anda harus memeriksa di mana normal profileAnda jika Anda ingin melakukannya)