Я відповідаю собі, як нарешті відкрив секрет. Ні -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зробити все важким підйомом.
І якщо це дійсно необхідно, насправді досить просто змусити bash виконувати щось після за .profileдопомогою командного рядка на кшталт ssh user@foo.com -t 'cd /mnt; echo ". ~/.bash_profile; PS1=\"\\h-\w \"" >~/xxx; bash --init-file ~/xxx'- дуже некрасиво, коли ставиться таким чином, але ці альтернативні .profileфайли можна підготувати раніше. (наскільки я можу сказати bash, є кілька кандидатських місць для .profileсценарію, і він виконає перше знайдене - . fileне має таких автоматичних резервних копій, тому вам потрібно буде перевірити, де нормально, profileякщо ви хочете це зробити)