আপনি চান একটি ডাউনলোড অন্য প্রক্সি ব্যবহার করুক, তারপর সবকিছু স্বাভাবিক অবস্থায় ফিরে আসুক। shell-এর startup ফাইল সম্পাদনা করে তা ফিরিয়ে দেওয়ার কথা মনে রাখার আশা করার দরকার নেই।

POSIX ধরনের shell-এ বহিরাগত কমান্ডের জন্য কমান্ডের আগে অ্যাসাইনমেন্ট বসান:

https_proxy=http://proxy.example:8080 curl https://example.com/

ওই ডাউনলোডের জন্য নির্ধারিত HTTP এন্ডপয়েন্ট ব্যবহার করুন; HTTP প্রক্সি তালিকা অনুমোদিত পাবলিক রুটের জন্য প্রার্থী দেয়। অ্যাসাইনমেন্টটি ওই কমান্ডের environment-এ দেওয়া হয়। এর সন্তান প্রসেসগুলো মানটি উত্তরাধিকার পেতে পারে, কিন্তু কমান্ড শেষ হওয়ার পরে অ্যাসাইনমেন্টটি মূল shell-এর বিদ্যমান মান প্রতিস্থাপন করে না।

ক্লায়েন্টই এখনও ঠিক করে কী পড়বে

shell সিনট্যাক্স একটি environment তৈরি করে; এটি নেটওয়ার্ক রুট বাধ্য করে না। অ্যাপ্লিকেশন যে ভেরিয়েবল নাম সমর্থন করে সেগুলো ব্যবহার করুন। বিদ্যমান বাইপাস ভেরিয়েবল, স্পষ্ট কমান্ড অপশন বা অ্যাপ্লিকেশনের নিজস্ব কনফিগারেশন ফলাফলকে প্রভাবিত করতে পারে।

Bash environment ডকুমেন্টেশন কমান্ড-প্রিফিক্স আচরণ ব্যাখ্যা করে। shell ফাংশন, বিশেষ builtin বা shell সিনট্যাক্স হিসেবে থাকা কমান্ডের অতিরিক্ত scope নিয়ম থাকতে পারে, তাই উপরের সহজ উদাহরণটি ইচ্ছাকৃতভাবে একটি বহিরাগত প্রোগ্রাম ব্যবহার করে।

একাধিক কমান্ডের জন্য subshell ব্যবহার করুন

(
  export http_proxy=http://proxy.example:8080
  export https_proxy=http://proxy.example:8080
  command-one
  command-two
)

বন্ধনীর ভেতরের গ্রুপটি নিজের shell environment নিয়ে চলে। উদাহরণের কমান্ড নামগুলো আপনার চালাতে চাওয়া প্রোগ্রাম দিয়ে বদলান। এই প্যাটার্নটি পুরোনো মান সংরক্ষণ, তা ওভাররাইট এবং প্রতিটি সম্ভাব্য ব্যর্থতার পরে হাতে ফিরিয়ে আনার ভঙ্গুর ক্রম এড়ায়।

shell ইতিহাসে কপি করা উদাহরণ থেকে গোপন তথ্য দূরে রাখুন। এছাড়া মনে রাখুন sudo environment ফিল্টার করতে পারে; বহিরাগত কমান্ডে দৃশ্যমান ভেরিয়েবলটি স্বয়ংক্রিয়ভাবে প্রতিটি বিশেষাধিকার সীমার মধ্য দিয়ে যায় না। অস্থায়ী scope এবং প্রকৃত প্রক্সি নির্বাচন আলাদা প্রশ্ন হয়ে থাকে।

সম্পর্কিত নিবন্ধ