बेशक, आप कमांड के अंदर पर्यावरण चर सेट कर सकते हैं, हालांकि आपको उद्धृत करने में सावधानी बरतनी होगी: याद रखें कि आपका शेल आपके स्थानीय कमांड लाइन को पार्स करने जा रहा है, और फिर दूरस्थ शेल को स्ट्रिंग पर जाना होगा। प्राप्त करता है।
आप एक चर यह ग्राहक पर है कि सर्वर पर एक ही मूल्य प्राप्त करना चाहते हैं, कोशिश SendEnv
विकल्प:
ssh -o SendEnv = MYVAR server.example.com mycommand
हालांकि, इसे सर्वर से समर्थन की आवश्यकता होती है। OpenSSH के साथ, चर नाम को अधिकृत करना होगा /etc/sshd_config
।
यदि सर्वर केवल कुछ विशिष्ट चर नामों की अनुमति देता है, तो आप उसके आसपास काम कर सकते हैं; उदाहरण के लिए एक सामान्य सेटअप के LC_*
माध्यम से अनुमति देता है, और आप निम्न कार्य कर सकते हैं:
ssh -o SendEnv = LC_MYVAR server.example.com 'MYVAR = $ LC_MYVAR; unset LC_MYVAR; निर्यात MYVAR; mycommand '
यदि LC_*
कोई विकल्प नहीं भी है, तो आप TERM
पर्यावरण चर में जानकारी पास कर सकते हैं , जो हमेशा कॉपी की जाती है (हालांकि एक लंबाई सीमा हो सकती है)। आपको अभी भी यह सुनिश्चित करना होगा कि दूरस्थ शेल TERM
किसी ज्ञात टर्मिनल प्रकार को नामित करने के लिए चर को प्रतिबंधित नहीं करता है । -t
यदि आप एक दूरस्थ संवादात्मक खोल शुरू नहीं कर रहे हैं, तो ssh के विकल्प को पास करें ।
env TERM = "अतिरिक्त जानकारी: $ TERM" ssh -t server.example.com 'MYVAR = $ {TERM%: *}; अवधि = $ {अवधि ## *:}; निर्यात MYVAR; mycommand '
एक और संभावना है कि चर को सीधे कमांड में परिभाषित किया जाए:
ssh -t server.example.com 'निर्यात MYVAR = "अतिरिक्त जानकारी"; mycommand '
इस प्रकार, यदि कोई स्थानीय चर पास कर रहा है:
ssh -t server.example.com 'निर्यात MYVAR =' '' $ LOCALVAR '' ''; mycommand '
हालांकि, मुद्दों को उद्धृत करने से सावधान रहें: चर के मूल्य को सीधे रिमोट साइड पर निष्पादित शेल स्निपेट में इंटरपोल किया जाएगा। ऊपर दिए गए अंतिम उदाहरण में मान लिया गया है कि $LOCALVAR
कोई एकल उद्धरण ( '
) नहीं है।