私はついに秘密を発見したので、私は自己回答しています。の-tオプションsshも-lオプションのオプションもbash、それ自体ではログインシェルになりませんが、組み合わせて機能します。
ssh user@host.com -t 'cd /some/where; FOO=BAR NUMBER=42 bash -l'ディレクトリ、セットの環境変数を変更し、適切なログインシェルを起動します(私がこれまでに見つけた唯一の違いはつまり/etc/motd、このように表示されていない-それは、通常だ sshのか、login責任、ないのbashすべてが思わ以外-さんを完全に機能し、すべての環境変数は同一です)。
これらの環境/ディレクトリの変更はsshの後に発生するためPermitUserEnvironment、関連する設定によって(厳密には計画どおり)制限されず、.bashrc/ .profileが実行される前に行われます。これには長所と短所があります-のようなbash initスクリプトから設定されるものを単にオーバーライドするのは難しくなりますが、コマンドラインにPS1正確な値を正確に詰め込み、すべての面倒な作業を行うのは簡単です。ssh.profile
そして本当に必要な場合、.profileコマンドラインで次のようにbashに何かを実行させるのは実際には非常に簡単ですssh user@foo.com -t 'cd /mnt; echo ". ~/.bash_profile; PS1=\"\\h-\w \"" >~/xxx; bash --init-file ~/xxx'-そのようにすると非常にい.profileですが、これらの代替ファイルは前に準備することができます。(私が知る限りbash、.profileスクリプトの候補場所がいくつかあり、最初に見つかった場所を実行します- . fileそのような自動フォールバックはないので、それを行うには通常の場所を確認する必要がありますprofile)