Nastavitve orodja VPN: okolje ob zagonu ali izvoz v hooku?
Hook zažene svoje lastne otroke, ne lupine, ki ste jo že odprli. Okolje ob zagonu drži zasebno končno točko le v tistem enem ukazu, ki jo potrebuje.
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.
| Property | Prefix on the command | Export from the hook |
|---|---|---|
| Who receives it | That invocation only | Children the hook starts |
| Lifetime | Until the process exits | Until the hook's own session ends |
| Leakage | Scoped to one command | Applies to later commands in that session |
| Repeat cost | Every invocation | Once per connection |
| Works for an open editor | No, unless the editor is started with it | No |
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.