VPN kabliukas, kuris eksportuoja API galinę vietą, keičia jo paleidžiamų procesų aplinką, o ne to terminalo, kuris jau buvo atidarytas, kai tunelis pakilo. Šis vienas skirtumas paaiškina daugumą pranešimų „įrankis vis dar kviečia viešą galinę vietą“. Yra dvi darbingos nustatymo vietos, ir pasirinkimas priklauso nuo to, kas jį naudoja ir kaip dažnai jis keičiasi. Palyginkite juos prieš pridėdami dar vieną paleidimo scenarijų.

Dvi vietos, kuriose nustatymas gali gyventi

Pirmasis variantas yra priešdėlis pačioje komandoje: reikšmė egzistuoja tik tam vienam kvietimui ir išnyksta kartu su juo. Antrasis variantas yra eksportas ryšio kabliuke, kuris pasiekia kiekvieną procesą, kurį kabliukas paleidžia po to momento. Jie skiriasi aprėptimi ir gyvavimo trukme, o ne sintakse, ir šis skirtumas nulemia daugumą gedimų.

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

Lentelė daro kabliuką pigų ir slepia tikrą sąskaitą: ji taip pat parenka privačią galinę vietą komandoms, neturinčioms nieko bendra su užduotimi. Kiekvieną eilutę skaitykite kaip apribojimą, o ne kaip pageidavimą. Jei galinė vieta keičiasi kiekvienai užduočiai, priešdėlis laimi tikslumu, net jei tai kainuoja vieną klavišo paspaudimą.

Kodėl kabliukas negali pasiekti jau atidaryto apvalkalo

Aplinkos kintamieji perduodami procesui, kai sukuriamas proceso atvaizdas. Apvalkalas, pradėtas prieš prisijungimą, išlaiko gautą kopiją, o kabliuke įvykdytas eksportas nėra transliacija kiekvienam kompiuterio procesui. Jį paveldi tik paties kabliuko vaikai. Apvalkalo vaikai paima tai, ką apvalkalas turi jų paleidimo momentu, ir todėl ta pati komanda gali veikti viename terminale ir neveikti kitame.

Tas pats galioja grafiniam redaktoriui. Jo plėtinių šeimininkas, integruotas terminalas ir foninė kalbos serveris buvo atskirti paleidimo metu ir turi savo kopijas. Aplanko atidarymas iš naujo nebūtinai paleidžia tuos vaikus iš naujo, todėl pridėtas nustatymas vis tiek niekada neatvyksta.

Pigiausias testas yra atspausdinti kintamąjį iš tos vietos, kuri nepavyksta, o ne iš apvalkalo, kuris veikia. Jei nepavykstantis procesas prasidėjo prieš tunelį, eksportas neturėjo jokio šanso.

Kiekvienos komandos forma, išrašyta

Priešdėlis palieka pasirinkimą matomą toje komandoje, kuri jį naudoja, ir tai padeda, kai galinė vieta keičiasi tarp užduočių:

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

Komanda yra tik pavyzdys: my-work-tool yra vietos žymeklis, o INTERNAL_API nėra VPN standartas, todėl įrašykite dokumentuotą programos, kurią iš tikrųjų vykdote, nustatymą ir savo patvirtintą mazgą. Nedėkite žetono ar slaptažodžio toje pačioje eilutėje, nes jie patenka į apvalkalo istoriją.

Kai kelioms komandoms tenka viena užduotis, trumpas peržiūrėtas apvado scenarijus nustato kintamuosius ir tada juos paleidžia. Taip išlieka vienintelis apibrėžimas, o reikšmė netampa globali kiekvienai būsimai terminalo komandai.

Įkelkite iš naujo, paleiskite iš naujo arba palikite

Jau veikiančiam įrankiui pirmenybę teikite jo pačio įkėlimui iš naujo arba darbo srities profiliui, jei jis yra. Priešingu atveju išsaugokite darbą ir paleiskite iš naujo komponentą, kuris skaito nustatymą, o tai dažnai yra kalbos serveris, o ne redaktoriaus langas. Langą paleisti iš naujo ir manyti, kad vaikų procesai pasekė, yra būtent tai, dėl ko įkėlimas iš naujo atrodo neveikiantis.

Atsijungimas yra atskiras sprendimas. Pristabdymas, uždarymas ar prisijungimas iš naujo priklauso programai, ir galinės vietos kintamasis to nekontroliuoja. Traktuokite kintamąjį kaip konfigūraciją, kuri parenka adresą, o ne kaip taisyklę apie tai, koks tinklo srautas gali būti naudojamas vėliau, ir abu klausimai lieka atskiriami.

Susiję straipsniai