VPN hook, ktorý exportuje koncový bod API, mení prostredie procesov, ktoré spúšťa, nie prostredie terminálu, ktorý bol už otvorený, keď sa tunel zdvihol. Práve tento jediný rozdiel vysvetľuje väčšinu hlásení „nástroj stále volá verejný koncový bod“. Existujú dve použiteľné miesta pre nastavenie a výber závisí od toho, kto ho spotrebúva a ako často sa mení. Porovnajte ich, skôr než pridáte ďalší spúšťací skript.

Dve miesta, kde nastavenie môže žiť

Prvá možnosť je prefix na samotnom príkaze: hodnota existuje len pre to jedno volanie a s ním zmizne. Druhá možnosť je export vnútri pripojovacieho hooku, ktorý zasiahne každý proces, ktorý hook od tej chvíle spustí. Líšia sa dosahom a životnosťou, nie syntaxou, a tento rozdiel rozhoduje väčšinu zlyhaní.

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

Tabuľka robí hook lacným a skrýva skutočný účet: vyberá súkromný koncový bod aj pre príkazy, ktoré s úlohou nemajú nič spoločné. Čítajte každý riadok ako obmedzenie, nie ako preferenciu. Ak sa koncový bod mení podľa úlohy, prefix víťazí v presnosti, aj keď stojí jedno stlačenie klávesu.

Prečo hook nedosiahne na už otvorený shell

Premenné prostredia sa procesu odovzdávajú pri vytváraní obrazu procesu. Shell, ktorý začal pred pripojením, si drží kópiu, ktorú dostal, a export vykonaný vnútri hooku nie je vysielanie do každého procesu na stroji. Dedia ho len vlastné potomky hooku. Vlastné potomky shellu preberajú to, čo shell drží v okamihu ich spustenia, a preto ten istý príkaz môže fungovať v jednom termináli a zlyhať v inom.

To isté platí pre grafický editor. Jeho hostiteľ rozšírení, vstavaný terminál a jazykový server na pozadí sa pri spustení rozdelili a držia si vlastné kópie. Opätovné otvorenie priečinka tieto potomky nemusí reštartovať, takže pridané nastavenie stále nikdy nedorazí.

Najlacnejší test je vypísať premennú z miesta, ktoré zlyháva, nie zo shellu, ktorý funguje. Ak zlyhávajúci proces začal pred tunelom, export nemal žiadnu šancu.

Forma pre jednotlivý príkaz, rozpísaná

Prefix drží voľbu viditeľnú v príkaze, ktorý ho používa, čo pomáha, keď sa koncový bod medzi úlohami mení:

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

Príkaz je len ilustratívny: my-work-tool je zástupný názov a INTERNAL_API nie je štandard VPN, preto doplňte zdokumentované nastavenie programu, ktorý skutočne spúšťate, a svoj schválený hostiteľ. Nedávajte token ani heslo na ten istý riadok, lebo skončia v histórii shellu.

Keď k jednej úlohe patrí viac príkazov, krátky skontrolovaný obaľovací skript nastaví premenné a potom ich spustí. Tým zostáva jediná definícia, bez toho aby sa hodnota stala globálnou pre každý budúci príkaz v termináli.

Znova načítajte, reštartujte alebo to nechajte tak

Pre nástroj, ktorý už beží, dajte prednosť jeho vlastnému znovunačítaniu alebo profilu pracovného priestoru, ak ho má. Inak uložte prácu a reštartujte komponent, ktorý nastavenie číta, a to je často jazykový server, nie okno editora. Reštartovanie okna s domnienkou, že potomkovia ho nasledovali, je dôvod, prečo znovunačítanie vyzerá, akoby nefungovalo.

Odpojenie je samostatné rozhodnutie. Pozastavenie, zatvorenie alebo opätovné pripojenie patrí aplikácii a premenná koncového bodu to neriadi. Berte premennú ako konfiguráciu, ktorá volí adresu, nie ako pravidlo o tom, aká sieťová prevádzka sa smie potom použiť, a obe otázky zostávajú oddeliteľné.

Súvisiace články