VPN кука, която експортира крайна точка на API, променя средата на процесите, които тя стартира, а не на терминала, който вече е бил отворен, когато тунелът е тръгнал. Тази една разлика обяснява повечето сигнали „инструментът все още вика публичната крайна точка“. Има две работещи места за настройката и изборът зависи от това кой я консумира и колко често се променя. Сравнете ги, преди да добавите още един стартов скрипт.

Две места, където може да живее настройката

Първият вариант е префикс върху самата команда: стойността съществува за това едно извикване и изчезва с него. Вторият вариант е експорт вътре в куката за свързване, който достига до всеки процес, който куката стартира след това. Те се различават по обхват и живот, не по синтаксис, и тази разлика решава повечето откази.

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

Таблицата прави куката да изглежда евтина и скрива истинската сметка: тя също избира частна крайна точка за команди, които нямат нищо общо със задачата. Четете всеки ред като ограничение, а не като предпочитание. Ако крайната точка се мени за всяка задача, префиксът печели по точност, макар да струва едно натискане.

Защо куката не може да достигне до вече отворена обвивка

Променливите на средата се предават на процес, когато образът на процеса се създава. Обвивка, стартирала преди връзката, пази полученото копие, а експорт, изпълнен вътре в куката, не е разпращане до всеки процес на машината. Само собствените дъщерни процеси на куката го наследяват. Дъщерните процеси на обвивката вземат това, което обвивката държи в момента на стартирането им, и затова една и съща команда може да работи в един терминал и да се провали в друг.

Същото важи и за графичен редактор. Неговият хост за разширения, вграденият терминал и фоновият езиков сървър са се разклонили при стартирането и държат свои копия. Повторното отваряне на папка не рестартира непременно тези дъщерни процеси, така че добавената настройка пак не пристига.

Най-евтиният тест е да отпечатате променливата от мястото, което се проваля, а не от обвивката, която работи. Ако процесът, който се проваля, е стартирал преди тунела, експортът въобще не е имал шанс.

Формата за отделна команда, изписана

Префиксът държи избора видим в командата, която го използва, което помага, когато крайната точка се мени между задачи:

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

Командата е примерна: my-work-tool е заместител, а INTERNAL_API не е стандарт на VPN, затова поставете документираната настройка на програмата, която действително изпълнявате, и своя одобрен хост. Не поставяйте токен или парола на същия ред, защото те попадат в историята на обвивката.

Когато няколко команди принадлежат на една задача, кратък прегледан скрипт-обвивка задава променливите и след това ги стартира. Така остава едно определение, без стойността да става глобална за всяка бъдеща команда в терминала.

Презаредете, рестартирайте или го оставете

За инструмент, който вече работи, предпочитайте собственото му презареждане или профил на работното пространство, когато има такъв. Иначе запазете работата и рестартирайте компонента, който чете настройката, а това често е езиков сървър, не прозорецът на редактора. Рестартирането на прозореца с допускането, че дъщерните процеси са го последвали, е причината презареждането да изглежда, че не работи.

Прекъсването е отделно решение. Паузата, затварянето или повторното свързване принадлежат на приложението и променливата за крайната точка не ги управлява. Подхождайте на променливата като на конфигурация, която избира адрес, а не като на правило за това кой мрежов трафик може да се използва след това, и двете грижи остават разделими.

Подобни статии