sh 'unset http_proxy' সেই কলের জন্য চালু হওয়া শেলটি বদলে দেয়। এটি বন্ধ হলে Rake-এর Ruby প্রক্রিয়ায় তার মূল environment থেকে যায়, আর পরের sh কল আবার সেটি উত্তরাধিকার করে।

পরবর্তী কাজের জন্য Ruby প্রক্রিয়া বদলাতে:

ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')

এটি পরবর্তী সন্তান প্রক্রিয়া ও ওই key-গুলো পড়া Ruby কোডকে প্রভাবিত করে। এটি Rake প্রথমে যে টার্মিনাল চালু করেছিল সেটি পুনরায় কনফিগার করে না।

একটি সন্তান কমান্ডের জন্য তার environment সরাসরি দিন:

sh(
  { 'http_proxy' => nil, 'HTTP_PROXY' => nil },
  'ruby', 'download.rb'
)

Ruby-র প্রক্রিয়া চালু করার ইন্টারফেস nil মানকে সেই সন্তানের environment থেকে অপসারণ হিসেবে ধরে। Rake argument list-টি ওই ইন্টারফেসে পাঠায়, ফলে তার নিজের ENV অপরিবর্তিত থাকে।

প্রকৃত client-এর সাথে সম্পর্কিত key-গুলো সরান। একটি HTTPS কাজ https_proxy-ও ব্যবহার করতে পারে, আর কিছু client ALL_PROXY বা অন্য configuration ফাইল দেখে। শুধু একটি HTTP key সরানো সার্বজনীন direct-route নির্দেশ নয়।

একাধিক argument-এর রূপটি চালনযোগ্য argument আলাদা রাখে। unset কমান্ড ও URL সহ shell string তৈরি করার দরকার নেই।

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