Odpowiadam sam, ponieważ w końcu odkryłem tajemnicę. Ani -topcja ssh, ani -lopcja dla bashnie doprowadzą do samodzielnego zalogowania się do powłoki - ale w połączeniu działają.
ssh user@host.com -t 'cd /some/where; FOO=BAR NUMBER=42 bash -l'zmienia katalog, ustawia zmienne środowiskowe, a następnie uruchamia prawidłową powłokę logowania (jedyną różnicą, jaką do tej pory znalazłem, jest to, że /etc/motdnie jest wyświetlany w ten sposób - zwykle sshjest loginto odpowiedzialność lub odpowiedzialność, a nie bash- poza tym, że wszystko wydaje się pracować idealnie, a wszystkie zmienne środowiskowe są identyczne).
Te zmiany środowiska / katalogu następują po ssh, więc nie są ograniczone przez PermitUserEnvironmentpowiązane ustawienia (dokładnie zgodnie z planem), ale przed .bashrc/ .profileget. Ma to wady i zalety - trudniej jest po prostu przesłonić coś, co jest ustawione ze skryptów inicjujących bash, jak PS1, ale łatwiej jest spakować dokładnie odpowiednie wartości w sshwierszach poleceń i .profilewykonać ciężkie podnoszenie.
A jeśli jest to naprawdę konieczne, naprawdę łatwo jest wywołać bash, aby wykonać coś po .profilewierszu poleceń ssh user@foo.com -t 'cd /mnt; echo ". ~/.bash_profile; PS1=\"\\h-\w \"" >~/xxx; bash --init-file ~/xxx'- bardzo brzydkie, gdy tak to ułożysz, ale te alternatywne .profilepliki można wcześniej przygotować. (o ile wiem, bashma kilka lokalizacji kandydatów do .profileskryptu i wykona pierwszą znalezioną - . filenie ma takich automatycznych awarii, więc musisz sprawdzić, gdzie jest twoja normalność, profilejeśli chcesz to zrobić)