मैं आत्म-उत्तर दे रहा हूं, क्योंकि मैंने आखिरकार रहस्य का पता लगा लिया है। न तो -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निष्पादित हो जाते हैं। इसमें अपसाइड्स और डाउनसाइड्स हैं - बस कुछ को ओवरराइड करना कठिन है जो बैश इनिट स्क्रिप्ट्स से सेट हो जाता है PS1, लेकिन sshकमांड लाइनों में सही मानों को पैक करना आसान है , और .profileसभी भारी उठाने हैं।
और अगर वास्तव में आवश्यक है, तो .profileकमांड लाइन के साथ कुछ निष्पादित करने के लिए बैश प्राप्त करना वास्तव में बहुत आसान है जैसे ssh user@foo.com -t 'cd /mnt; echo ". ~/.bash_profile; PS1=\"\\h-\w \"" >~/xxx; bash --init-file ~/xxx'- बहुत ही बदसूरत जब उस तरह से रखा जाता है, लेकिन इन वैकल्पिक .profileफ़ाइलों को पहले तैयार किया जा सकता है। (जहां तक मैं बता सकता हूं bashकि .profileस्क्रिप्ट के लिए कुछ उम्मीदवार स्थान हैं और पहले पाए गए को निष्पादित करेगा - . fileइस तरह की स्वचालित कमियां नहीं हैं, इसलिए आपको यह जांचने की आवश्यकता होगी कि आपका सामान्य कहां है profileयदि आप ऐसा करना चाहते हैं)