Et VPN-hook, der eksporterer et API-endepunkt, ændrer miljøet for de processer, det starter, ikke for den terminal, der allerede var åben, da tunnelen kom op. Den ene forskel forklarer de fleste rapporter om, at „værktøjet stadig kalder det offentlige endepunkt“. Der er to brugbare steder at lægge indstillingen, og valget afhænger af, hvem der bruger den, og hvor ofte den ændrer sig. Sammenlign dem, før du tilføjer endnu et opstartsscript.

To steder indstillingen kan bo

Mulighed et er et præfiks på selve kommandoen: værdien findes for netop det ene kald og forsvinder med det. Mulighed to er en eksport inde i forbindelsens hook, som når hver proces, som hooket starter derefter. De adskiller sig i rækkevidde og levetid, ikke i syntaks, og den forskel afgør de fleste fejl.

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

Tabellen får hooket til at se billigt ud og skjuler den egentlige regning: det vælger også et privat endepunkt til kommandoer, der intet har med opgaven at gøre. Læs hver række som en begrænsning, ikke som en præference. Hvis endepunktet skifter pr. opgave, vinder præfikset på præcision, selv om det koster ét tastetryk.

Hvorfor hooket ikke kan nå en skal, der allerede er åben

Miljøvariabler gives til en proces, når procesbilledet oprettes. En skal, der startede før forbindelsen, beholder den kopi, den fik, og en eksport, der køres inde i hooket, er ikke en udsendelse til hver proces på maskinen. Kun hookets egne børn arver den. En skals egne børn tager det, som skallen holder i det øjeblik, de starter, og derfor kan den samme kommando virke i én terminal og fejle i en anden.

Det samme gælder en grafisk editor. Dens udvidelsesvært, integrerede terminal og baggrundssprogserver blev forgrenet ved start og holder deres egne kopier. Genåbning af en mappe genstarter ikke nødvendigvis de børn, så den indstilling, du tilføjede, når stadig aldrig frem.

Den billigste test er at udskrive variablen fra det sted, der fejler, ikke fra den skal, der virker. Hvis processen, der fejler, startede før tunnelen, havde eksporten aldrig en chance.

Formen pr. kommando, skrevet ud

Et præfiks holder valget synligt i den kommando, der bruger det, hvilket hjælper, når endepunktet skifter mellem opgaver:

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

Kommandoen er kun et eksempel: my-work-tool er en pladsholder, og INTERNAL_API er ikke en VPN-standard, så indsæt den dokumenterede indstilling for det program, du faktisk kører, og din egen godkendte vært. Sæt ikke et token eller en adgangskode på samme linje, for de ender i skallens historik.

Når flere kommandoer hører til én opgave, sætter et kort, gennemgået indpakningsscript variablerne og starter dem derefter. Det holder én definition uden at gøre værdien global for hver fremtidig kommando i terminalen.

Genindlæs, genstart, eller lad det være

Til et værktøj, der allerede kører, foretrækker du dets egen genindlæsning eller arbejdsrumsprofil, når det har en. Ellers gem arbejdet, og genstart den komponent, der læser indstillingen, hvilket ofte er en sprogserver og ikke editorvinduet. At genstarte vinduet og antage, at barneprocesserne fulgte med, er netop, hvorfor en genindlæsning ser ud til ikke at virke.

Afbrydelsen er en separat beslutning. Pause, lukning eller genopkobling hører til applikationen, og endepunktvariablen styrer det ikke. Behandl variablen som konfiguration, der vælger en adresse, ikke som en regel om, hvilken netværkstrafik der må bruges bagefter, og de to anliggender forbliver adskilte.

Relaterede artikler