Hook VPN, ki izvozi končno točko API, spremeni okolje procesov, ki jih zažene, ne pa okolja terminala, ki je bil že odprt, ko se je tunel dvignil. Prav ta ena razlika pojasni večino poročil „orodje še vedno kliče javno končno točko“. Obstajata dve uporabni mesti za nastavitev, izbira pa je odvisna od tega, kdo jo uporablja in kako pogosto se spreminja. Primerjajte ju, preden dodate še en zagonski skript.

Dve mesti, kjer lahko nastavitev živi

Prva možnost je predpona na samem ukazu: vrednost obstaja le za ta en klic in z njim izgine. Druga je izvoz znotraj hooka povezave, ki doseže vsak proces, ki ga hook zažene po tej točki. Razlikujeta se po dosegu in življenjski dobi, ne po sintaksi, in ta razlika odloči večino napak.

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

Tabela naredi hook videti poceni in skrije pravi račun: izbere zasebno končno točko tudi za ukaze, ki nimajo nič opraviti z nalogo. Vsako vrstico berite kot omejitev, ne kot preferenco. Če se končna točka spreminja po nalogah, predpona zmaga v natančnosti, četudi stane en pritisk tipke.

Zakaj hook ne more doseči že odprte lupine

Okoljske spremenljivke se procesu predajo ob ustvarjanju slike procesa. Lupina, ki se je začela pred povezavo, obdrži prejeto kopijo, izvoz, izveden znotraj hooka, pa ni oddajanje vsem procesom na stroju. Podedujejo ga le lastni otroci hooka. Lastni otroci lupine vzamejo tisto, kar ima lupina v trenutku njihovega zagona, in zato lahko isti ukaz deluje v enem terminalu in spodleti v drugem.

Enako velja za grafični urejevalnik. Njegov gostitelj razširitev, vgrajeni terminal in jezikovni strežnik v ozadju so se ob zagonu razvejali in imajo lastne kopije. Ponovno odpiranje mape teh otrok ne nujno znova zažene, zato dodana nastavitev še vedno nikoli ne prispe.

Najcenejši preizkus je izpisati spremenljivko s tistega mesta, ki spodleti, ne iz lupine, ki deluje. Če se je proces, ki spodleti, začel pred tunelom, izvoz ni imel nobene možnosti.

Oblika za posamezni ukaz, izpisana

Predpona ohrani izbiro vidno v ukazu, ki jo uporablja, kar pomaga, ko se končna točka med nalogami spreminja:

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

Ukaz je le ponazoritev: my-work-tool je nadomestni znak in INTERNAL_API ni standard VPN, zato vstavite dokumentirano nastavitev programa, ki ga zares izvajate, in svojega odobrenega gostitelja. Ne postavljajte žetona ali gesla v isto vrstico, ker pristaneta v zgodovini lupine.

Ko več ukazov spada k eni nalogi, kratek pregledan ovojni skript nastavi spremenljivke in jih nato zažene. Tako ostane ena sama definicija, vrednost pa ne postane globalna za vsak prihodnji ukaz v terminalu.

Ponovno naložite, znova zaženite ali pustite pri miru

Pri orodju, ki že teče, raje uporabite njegovo lastno ponovno nalaganje ali profil delovnega prostora, če ga ima. Sicer shranite delo in znova zaženite komponento, ki bere nastavitev, to pa je pogosto jezikovni strežnik in ne okno urejevalnika. Znova zagnati okno in domnevati, da so otroški procesi sledili, je prav razlog, da se ponovno nalaganje zdi nedelujoče.

Prekinitev povezave je ločena odločitev. Ustavljanje, zapiranje ali ponovno povezovanje pripada aplikaciji, spremenljivka končne točke pa tega ne nadzoruje. Spremenljivko obravnavajte kot konfiguracijo, ki izbere naslov, ne kot pravilo o tem, kateri omrežni promet je dovoljen pozneje, in obe vprašanji ostaneta ločljivi.

Sorodni članki