Hook VPN, který exportuje koncový bod API, mění prostředí procesů, které spouští, ne terminálu, jenž byl otevřený už při navázání tunelu. Právě tento rozdíl vysvětluje většinu hlášení „nástroj pořád volá veřejný koncový bod“. Existují dvě použitelná místa, kam nastavení umístit, a volba závisí na tom, kdo ho spotřebovává a jak často se mění. Porovnejte je, než přidáte další spouštěcí skript.

Dvě místa, kde nastavení může žít

První možnost je prefix na samotném příkazu: hodnota existuje pro to jedno volání a s ním zmizí. Druhá možnost je export uvnitř připojovacího hooku, který zasáhne každý proces, jenž hook od té chvíle spustí. Liší se dosahem a životností, ne syntaxí, a tento rozdíl rozhoduje většinu selhání.

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

Tabulka dělá hook levným a skrývá skutečný účet: vybírá soukromý koncový bod i pro příkazy, které s úkolem nemají nic společného. Čtěte každý řádek jako omezení, ne jako preferenci. Pokud se koncový bod mění podle úkolu, prefix vítězí v přesnosti, i když stojí jedno stisknutí klávesy.

Proč hook nedosáhne na už otevřený shell

Proměnné prostředí se procesu předávají při vytvoření obrazu procesu. Shell, který začal před připojením, si drží kopii, kterou dostal, a export provedený uvnitř hooku není vysílání do každého procesu na stroji. Dědí ho jen vlastní potomci hooku. Vlastní potomci shellu přebírají to, co shell drží v okamžiku jejich spuštění, a proto stejný příkaz může v jednom terminálu fungovat a v jiném selhat.

Totéž platí pro grafický editor. Jeho hostitel rozšíření, vestavěný terminál a jazykový server na pozadí se při spuštění rozdvojili a drží si vlastní kopie. Opětovné otevření složky tyto potomky nutně nerestartuje, takže nastavení, které jste přidali, stále nikdy nedorazí.

Nejlevnější test je vypsat proměnnou z místa, které selhává, ne ze shellu, který funguje. Pokud selhávající proces začal před tunelem, export neměl žádnou šanci.

Forma pro jednotlivý příkaz, rozepsaná

Prefix drží volbu viditelnou v příkazu, který ji používá, což pomáhá, když se koncový bod mezi úkoly mění:

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

Příkaz je ilustrativní: my-work-tool je zástupný název a INTERNAL_API není standard VPN, takže doplňte zdokumentované nastavení programu, který skutečně spouštíte, a svůj schválený hostitel. Nedávejte token ani heslo na stejný řádek, protože skončí v historii shellu.

Když k jednomu úkolu patří několik příkazů, krátký zkontrolovaný obalový skript nastaví proměnné a pak je spustí. Tím zůstává jediná definice, aniž by se hodnota stala globální pro každý budoucí příkaz v terminálu.

Znovu načtěte, restartujte, nebo to nechte být

U nástroje, který už běží, dejte přednost jeho vlastnímu znovunačtení nebo profilu pracovního prostoru, pokud ho má. Jinak uložte práci a restartujte komponentu, která nastavení čte, což je často jazykový server, ne okno editoru. Restartování okna s domněnkou, že potomci ho následovali, je důvod, proč znovunačtení vypadá, že nefunguje.

Odpojení je samostatné rozhodnutí. Pozastavení, zavření nebo opětovné připojení patří aplikaci a proměnná koncového bodu to neřídí. Berte proměnnou jako konfiguraci, která volí adresu, ne jako pravidlo o tom, jaký síťový provoz se smí potom použít, a obě věci zůstanou oddělitelné.

Související články