Waarom die uitvoering van set-proxy.sh jou terminaal nie verander nie
'n Uitgevoerde script kan nie veranderlikes na sy ouer-shell terug uitvoer nie. Laai 'n betroubare konfigurasielêer in wanneer die huidige shell die instellings moet behou.
Jou script bevat die regte export https_proxy=...-lyn. Jy voer dit uit, en die volgende opdrag sien steeds die ou proxy. Die script het dalk heeltemal reg gewerk binne sy eie proses.
Die uitvoering van 'n script begin 'n aparte shell. Dit kan veranderlikes aan opdragte wat dit begin, deurgee, maar dit kan nie die omgewing van die ouer terminaal-shell na sy afsluiting vervang nie.
./set-proxy.sh
. ./set-proxy.sh
Dit is verskillende bewerkings. Die tweede gebruik die shell se dot-ingeboude om die lêer in die huidige shell te lees. Bash noem dit ook source; sien sy ingeboude verwysing.
Laai net 'n lêer in wat jy vertrou, want al sy shell-opdragte loop in daardie huidige konteks. As die proxy net vir opdragte binne die script nodig is, is gewone uitvoering eerder die korrekte grens. Vir 'n enkele eksterne opdrag vermy 'n opdrag-gebonde proxy-toewysing dat die huidige shell verander.
Hou veranderlike-toewysings letterlik. Backticks beteken opdrag-vervanging, nie aanhaling nie. 'n Lyn wat 'n proxy toewys, moet nie per ongeluk sy URL probeer uitvoer nie. Vir waardes wat 'n publieke eindpunt moet kies, verskaf die gratis proxy-lys kandidate wie se protokol by die kliënt moet pas. Verifieer laastens die veranderlike-name wat die werklike netwerk-kliënt lees; om die shell-omvang reg te maak, maak nie 'n onondersteunde veranderlike effektief nie.