শিরোনাম বলে, আমি 'ssh' ব্যবহার করে রিমোট সার্ভারে পরিবেশের পরিবর্তনগুলি সংশোধন করতে চাই।
আমার প্রথম প্রচেষ্টা ছিল:
$ ssh mysvr -l sikaiwei "getId=$ORANGE; echo $ORANGE; ORANGE=$((ORANGE+1)); echo $ORANGE; echo 'getId is '+$getId;"
প্রথমে, আমি সার্ভার হোস্টে $ ORANGE সংজ্ঞায়িত করে নি, কিন্তু $ ORANGE কে ক্লায়েন্টে "1" হিসাবে সংজ্ঞায়িত করেছে, এবং আমি পেয়েছি:
1
1
getId is +
উল্লেখ্য, কমান্ডটি ক্লায়েন্টের মান $ ORANGE এর মানটি বাছাই করছে,
এবং আপডেট ( ORANGE+1
) ঘটছে না।
তারপর আমি ক্লায়েন্ট হোস্টে $ ORANGE সংজ্ঞাটি সরিয়ে দিয়েছি,
এবং আমার মধ্যে একটি কমান্ড স্থাপন করে সার্ভারে $ ORANGE সংজ্ঞায়িত .bash_profile
।
কিন্তু
$ ssh mysvr -l sikaiwei "getId=$ORANGE; echo $ORANGE; ORANGE=$((ORANGE+1)); echo $ORANGE; echo 'getId is '+$getId;"
ফলে
getId is +
এটি $ ORANGE এর মান মুদ্রণ করতে পারে না যা আমি সার্ভার হোস্টে আরম্ভ করার চেষ্টা করেছি! তারপর আমি এই চেষ্টা:
$ ssh mysvr -l sikaiwei "। .profile; getId = $ কমলা; $ ORANGE প্রতিধ্বনি; কমলা = $ ((কমলা +1)); $ ORANGE প্রতিধ্বনি; echo 'getId হয়' + $ getId; " GetId + হয়
এটা এখনও কাজ করে না।
আমি '..' (একক উদ্ধৃতি) এর পরিবর্তে ".." (ডাবল উদ্ধৃতি) ব্যবহার করার চেষ্টা করেছি, যেমন আপনি বলেছেন, কিন্তু এটা কিছুই প্রিন্ট ...
$ ssh myth@mysvr 'echo orangeis $ORANGE'
orangeis
আমি মুদ্রণ করতে চান
getId=1; echo 1; ORANGE=2; echo 2; …
পরিবর্তে
getId=; echo ; ORANGE=1; echo ; …
তাই আমি কিভাবে ক্লায়েন্ট মান পরিবর্তে সার্ভার হোস্ট থেকে $ ORANGE মান ব্যবহার করতে পারি?
আমার সার্ভার মেশিন উইন্ডোজ রান, কিন্তু আমি সিগুইন ইনস্টল। আমার ক্লায়েন্ট মেশিন লিনাক্স চালায়।
সম্পাদনা: আমি সমস্যাটির অংশ খুঁজে পেয়েছি: আমি $ ORANGE এ সেট করেছিলাম ~/.bash_profile
সার্ভার হোস্টে, এবং আমি একটি ইন্টারেক্টিভ শেল (সিগুইন) -এ "ইকো $ ORANGE" ব্যবহার করে $ ORANGE এর মান পেতে পারি, কিন্তু এটি প্রভাবিত করে না ssh
কমান্ড স্ট্রিং।
উদাহরণস্বরূপ, আমার ক্লায়েন্ট হোস্ট ব্যবহার করে আমি কিছুই পাই না
$ ssh sikaiwei@mysvr 'echo orange is $ORANGE'
orange is
এটির মতো, আমি সার্ভারের একটি সেশনে যা $ ORANGE এর মান পাই না।
দ্য . .profile
যে আমি যোগ করেনি সাহায্য না।
কিন্তু আমি যদি
$ ssh sikaiwei@mysvr '. ~/.bash_profile;echo orange is $ORANGE'
orange is 4
আমি মান পেয়েছিলাম!
ওহ, আমি উল্লেখ করতে ভুলে গেছি: সার্ভারে এই পরিবর্তনগুলি স্থির থাকতে চাই।
অন্য কথায়, যদি আমি একটি execute ssh
কমান্ড যা 4 থেকে 42 ডলারের ORANGE এর মান পরিবর্তন করে, আমি চাইলে অন্যটি করার সময় $ ORANGE হতে হবে 42 ssh
কমান্ড।
.bash_profile
জন্য প্রক্রিয়া পায় ssh
কাজ? আপনি নির্বাণ দ্বারা পরীক্ষা করতে পারেন echo $ORANGE
মধ্যে .bash_profile
?
. ~/.bash_profile
, তারপর আমি সংজ্ঞায়িত পরিবর্তনশীল ব্যবহার করতে পারেন ~/.bash_profile
bash
সার্চ .bash_profile
শুধুমাত্র যদি এটি একটি ইন্টারেক্টিভ শেল হয়, বা এটি সঙ্গে আহ্বান করা হয় --login
বিকল্প। আপনি যদি আহ্বান জানান ssh
কমান্ড স্ট্রিং যুক্তি সহ, শেলটি ইন্টারেক্টিভ হিসাবে বিবেচিত হবে না, এবং তাই .bash_profile
স্বয়ংক্রিয়ভাবে পড়তে হবে না।