os.system("unset http_proxy") କାହିଁକି କିଛି ବଦଳାଏ ନାହିଁ
ପ୍ରକ୍ସି ଭେରିଏବଲକୁ ସଠିକ୍ Python ପ୍ରୋସେସରୁ ହଟାନ୍ତୁ କିମ୍ବା ଚାଇଲ୍ଡ କମାଣ୍ଡକୁ ନିୟନ୍ତ୍ରିତ ପରିବେଶ ଦିଅନ୍ତୁ।
ନିମ୍ନରେ ଥିବା କଲଗୁଡ଼ିକ ଦୁଇଟି ଅଲଗା shell ପ୍ରୋସେସ ସୃଷ୍ଟି କରନ୍ତି:
os.system('unset http_proxy')
os.system('curl https://example.com/')
ପ୍ରଥମ shell ନିଜ ପରିବେଶରୁ ଏକ ଭେରିଏବଲ ହଟାଇ ବନ୍ଦ ହୋଇଯାଏ। Python ପ୍ରୋସେସରେ ମୂଳ ମୂଲ୍ୟ ଏବେ ମଧ୍ୟ ଅଛି। ଦ୍ୱିତୀୟ shell ଏହାକୁ ପୁନର୍ବାର ଉତ୍ତରାଧିକାରରେ ପାଏ।
ଶିଶୁକୁ ଆପଣ ଚାହିଁଥିବା ପରିବେଶ ଦିଅନ୍ତୁ
ଯେତେବେଳେ କେବଳ ଗୋଟିଏ କମାଣ୍ଡ ଉତ୍ତରାଧିକାରରେ ମିଳିଥିବା ପ୍ରକ୍ସି ଭେରିଏବଲ ବିନା ଚଳାଇବାକୁ ପଡ଼େ, Python ର ପରିବେଶ କପି କରି ସେହି କପିକୁ ଶିଶୁକୁ ଦିଅନ୍ତୁ:
import os
import subprocess
env = os.environ.copy()
for name in ('http_proxy', 'https_proxy', 'all_proxy',
'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY'):
env.pop(name, None)
subprocess.run(['curl', '--proxy', '', 'https://example.com/'],
env=env, check=True)
ସ୍ପଷ୍ଟ ଖାଲି curl ପ୍ରକ୍ସି ସେଟିଂ curl ର ନିଜସ୍ୱ କନଫିଗରେସନରୁ ପ୍ରକ୍ସି ଚୟନକୁ ମଧ୍ୟ ଅତିକ୍ରମ କରେ। ପରିବେଶ କପି କମାଣ୍ଡକୁ ଆବଶ୍ୟକ ହୋଇପାରୁଥିବା ଅନ୍ୟ ମୂଲ୍ୟ ରକ୍ଷା କରେ। ଏହାର ବଦଳରେ ଖାଲି ପରିବେଶ ଦେଲେ executable ଖୋଜ ପଥ ଏବଂ ଅସମ୍ପର୍କିତ ଆପ୍ଲିକେସନ କନଫିଗରେସନ ହଟିଯାଇପାରେ।
Python ପ୍ରୋସେସ ଭିତରେ ପରବର୍ତ୍ତୀ କାର୍ଯ୍ୟ ପାଇଁ, os.environ କୁ ଜାଣିଶୁଣି ବଦଳାନ୍ତୁ। ଏହା ନୂତନ ଭାବେ ସୃଷ୍ଟ ଶିଶୁମାନେ କଣ ଉତ୍ତରାଧିକାରରେ ପାଇବେ ତାହାକୁ ପ୍ରଭାବିତ କରେ; ଏହା ପିତୃ ଟର୍ମିନାଲର ପରିବେଶ କୁ ପୁନଃ ଲେଖେ ନାହିଁ କିମ୍ବା ନିଜ ସେଟିଂ ପୂର୍ବରୁ ଗ୍ରହଣ କରିଥିବା HTTP କ୍ଲାଏଣ୍ଟମାନଙ୍କୁ ଆବଶ୍ୟକ ଭାବରେ ପୁନଃ କନଫିଗର କରେ ନାହିଁ।
subprocess API env ଆର୍ଗୁମେଣ୍ଟ ଦଲିଲଭୁକ୍ତ କରେ, ଏବଂ os.environ Python ର ପ୍ରୋସେସ ପରିବେଶ ବର୍ଣ୍ଣନା କରେ। shell କମାଣ୍ଡ ସଫଳତା ରିପୋର୍ଟ କରିପାରେ ଅଥଚ ପରବର୍ତ୍ତୀ ଅନୁରୋଧ ପୁରୁଣା ପ୍ରକ୍ସି ବ୍ୟବହାର କରୁଥାଏ — ଏହାର କାରଣ ଏହି ପରିସରଗୁଡ଼ିକ।
ଶେଷରେ, ଆପଣ ପ୍ରକୃତରେ ଚଲାଉଥିବା କ୍ଲାଏଣ୍ଟ ଯାଞ୍ଚ କରନ୍ତୁ। ପରିବେଶ ଭେରିଏବଲଗୁଡ଼ିକ କନଫିଗରେସନର ଏକ ଇନପୁଟ ମାତ୍ର। ସ୍ପଷ୍ଟ ପ୍ରକ୍ସି ବିକଳ୍ପ କିମ୍ବା ଆପ୍ଲିକେସନର ନିଜସ୍ୱ କନଫିଗରେସନ ସେହି ଭେରିଏବଲ ଚାଲିଯିବା ପରେ ମଧ୍ୟ ପ୍ରକ୍ସି ଚୟନ ଜାରି ରଖିପାରେ।