Een VPN-hook die een API-eindpunt exporteert, verandert de omgeving van de processen die hij start, niet die van de terminal die al open was toen de tunnel omhoogkwam. Dat ene onderscheid verklaart de meeste meldingen „de tool roept nog steeds het openbare eindpunt aan“. Er zijn twee werkbare plekken voor de instelling, en de keuze hangt ervan af wie hem gebruikt en hoe vaak hij verandert. Vergelijk ze voordat je nog een startscript toevoegt.

Twee plekken waar de instelling kan leven

Optie één is een prefix op de opdracht zelf: de waarde bestaat voor die ene aanroep en verdwijnt ermee. Optie twee is een export binnen de verbindingshook, die elk proces bereikt dat de hook daarna start. Ze verschillen in bereik en levensduur, niet in syntaxis, en dat verschil beslist de meeste storingen.

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

De tabel laat de hook goedkoop lijken en verbergt de echte rekening: hij kiest ook een privé-eindpunt voor opdrachten die niets met de taak te maken hebben. Lees elke rij als een beperking, niet als een voorkeur. Verandert het eindpunt per taak, dan wint het prefix op precisie, ook al kost het één toetsaanslag.

Waarom de hook een al geopende shell niet kan bereiken

Omgevingsvariabelen worden aan een proces overgedragen wanneer het procesimage wordt gemaakt. Een shell die vóór de verbinding startte, houdt de kopie die hij kreeg, en een export die in de hook wordt uitgevoerd, is geen uitzending naar elk proces op de machine. Alleen de eigen kinderen van de hook erven hem. De eigen kinderen van een shell nemen wat de shell op het moment van hun start bevat, en daarom kan dezelfde opdracht in de ene terminal werken en in de andere mislukken.

Hetzelfde geldt voor een grafische editor. Zijn extensiehost, ingebouwde terminal en achtergrondtaalserver zijn bij het starten afgesplitst en houden eigen kopieën. Een map opnieuw openen herstart die kinderen niet per se, dus de instelling die je toevoegde, komt nog steeds nooit aan.

De goedkoopste test is de variabele afdrukken vanaf de plek die mislukt, niet vanuit de shell die werkt. Als het mislukkende proces vóór de tunnel startte, had de export nooit een kans.

De vorm per opdracht, uitgeschreven

Een prefix houdt de keuze zichtbaar in de opdracht die hem gebruikt, wat helpt wanneer het eindpunt tussen taken verandert:

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

De opdracht is alleen een voorbeeld: my-work-tool is een plaatsaanduiding en INTERNAL_API is geen VPN-standaard, vervang hem dus door de gedocumenteerde instelling van het programma dat je echt uitvoert en door je eigen goedgekeurde host. Zet geen token of wachtwoord op dezelfde regel, want die belanden in de shellgeschiedenis.

Wanneer meerdere opdrachten bij één taak horen, zet een kort nagekeken wrapper-script de variabelen en start ze daarna. Zo blijft één definitie bestaan zonder de waarde globaal te maken voor elke toekomstige opdracht in de terminal.

Herladen, herstarten of met rust laten

Voor een tool die al draait, geef je de voorkeur aan zijn eigen herlaadactie of werkruimteprofiel als het die heeft. Anders sla je het werk op en herstart je het onderdeel dat de instelling leest, wat vaak een taalserver is en niet het editorvenster. Het venster herstarten en aannemen dat de kinderprocessen volgden, is precies de reden dat een herlading lijkt te falen.

De verbinding verbreken is een aparte beslissing. Pauzeren, sluiten of opnieuw verbinden hoort bij de toepassing, en de eindpuntvariabele bestuurt dat niet. Behandel de variabele als configuratie die een adres kiest, niet als een regel over welk netwerkverkeer daarna gebruikt mag worden, en de twee kwesties blijven scheidbaar.

Gerelateerde artikelen