Ang isang hook ng VPN na nag-export ng endpoint ng API ay nagbabago ng environment ng mga prosesong inilulunsad nito, hindi ng terminal na bukas na nang umangat ang tunnel. Ang isang pagkakaibang ito ang nagpapaliwanag sa karamihan ng ulat na «tumatawag pa rin ang tool sa pampublikong endpoint». May dalawang magagamit na lugar para sa setting, at ang pagpili ay depende sa kung sino ang gumagamit nito at gaano kadalas itong nagbabago. Ihambing ang dalawa bago ka magdagdag ng isa pang script sa pagsisimula.

Dalawang lugar kung saan maaaring manirahan ang setting

Ang unang opsyon ay isang prefix sa utos mismo: umiiral ang halaga para sa isang tawag na iyon at nawawala kasama nito. Ang pangalawa ay isang export sa loob ng hook ng koneksyon, na umaabot sa bawat prosesong inilulunsad ng hook pagkatapos ng puntong iyon. Nagkakaiba sila sa saklaw at tagal, hindi sa sintaks, at ang pagkakaibang iyon ang nagpapasya sa karamihan ng kabiguan.

PropertyPrefix on the commandExport from the hook
Who receives itThat invocation onlyChildren the hook starts
LifetimeUntil the process exitsUntil the hook's own session ends
LeakageScoped to one commandApplies to later commands in that session
Repeat costEvery invocationOnce per connection
Works for an open editorNo, unless the editor is started with itNo

Ginagawang mukhang mura ng talahanayan ang hook at itinatago ang tunay na bayarin: pumipili rin ito ng pribadong endpoint para sa mga utos na walang kinalaman sa gawain. Basahin ang bawat hilera bilang hadlang, hindi bilang kagustuhan. Kung nagbabago ang endpoint bawat gawain, nananalo ang prefix sa katumpakan kahit isang pindot ng key ang halaga.

Bakit hindi maabot ng hook ang shell na bukas na

Ang mga variable ng environment ay ibinibigay sa isang proseso kapag nilikha ang imahe ng proseso. Ang shell na nagsimula bago ang koneksyon ay nagtatala ng kopyang natanggap nito, at ang export na isinagawa sa loob ng hook ay hindi broadcast sa bawat proseso sa makina. Ang mga anak lamang ng hook ang nagmamana nito. Ang mga anak ng shell ay kumukuha ng hawak ng shell sa sandaling magsimula sila, at kaya naman gumagana ang isang utos sa isang terminal at nabibigo sa iba.

Ganoon din sa isang graphical editor. Ang host ng extension nito, ang built-in na terminal at ang background na language server ay nahati sa paglulunsad at may sariling mga kopya. Ang muling pagbukas ng folder ay hindi laging nagpapasimula muli ng mga anak na iyon, kaya hindi pa rin dumarating ang setting na idinagdag mo.

Ang pinakamurang pagsubok ay i-print ang variable mula sa lugar na nabibigo, hindi mula sa shell na gumagana. Kung ang prosesong nabibigo ay nagsimula bago ang tunnel, wala sanang pagkakataon ang export.

Ang anyo sa bawat utos, nakasulat

Ang prefix ay nagpapanatili ng pagpipiliang nakikita sa utos na gumagamit nito, na nakakatulong kapag nagbabago ang endpoint sa pagitan ng mga gawain:

env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool

Ang utos ay halimbawa lamang: ang my-work-tool ay isang place holder at ang INTERNAL_API ay hindi standard ng VPN, kaya palitan ito ng dokumentadong setting ng programang talagang pinapatakbo mo at ng sarili mong aprubadong host. Huwag maglagay ng token o password sa parehong linya, dahil napupunta ito sa kasaysayan ng shell.

Kapag maraming utos ang kabilang sa isang gawain, isang maikling sinuring wrapper script ang nagtatakda ng mga variable at pagkatapos ay inilulunsad ang mga iyon. Pinapanatili nitong isa ang depinisyon nang hindi ginagawang pandaigdigan ang halaga para sa bawat susunod na utos sa terminal.

I-reload, i-restart, o hayaan na

Para sa tool na tumatakbo na, piliin ang sarili nitong reload o workspace profile kung mayroon. Kung wala, i-save ang trabaho at i-restart ang component na nagbabasa ng setting, na kadalasan ay language server at hindi ang bintana ng editor. Ang pag-restart ng bintana at pagpapalagay na sumunod ang mga anak na proseso ang dahilan kung bakit parang hindi gumagana ang reload.

Ang pag-disconnect ay hiwalay na pasya. Ang pag-pause, pagsasara o muling pagkonekta ay pag-aari ng aplikasyon, at hindi iyon kinokontrol ng variable ng endpoint. Ituring ang variable bilang konfigurasyong pumipili ng address, hindi bilang tuntunin tungkol sa kung aling trapiko ng network ang maaaring gamitin pagkatapos, at nananatiling hiwalay ang dalawang usapin.

Kaugnay na mga artikulo