Impostazioni dello strumento VPN: ambiente all’avvio o export nell’hook?
Un hook avvia i propri figli, non la shell che hai già aperto. Un ambiente all’avvio tiene l’endpoint privato solo sull’unico comando che ne ha bisogno.
Un hook VPN che esporta un endpoint API cambia l’ambiente dei processi che avvia, non quello del terminale già aperto quando il tunnel è salito. Questa sola distinzione spiega la maggior parte delle segnalazioni «lo strumento chiama ancora l’endpoint pubblico». Ci sono due punti praticabili dove mettere l’impostazione, e la scelta dipende da chi la consuma e da quanto spesso cambia. Confrontali prima di aggiungere un altro script di avvio.
Due punti in cui l’impostazione può vivere
La prima opzione è un prefisso sul comando stesso: il valore esiste per quella sola invocazione e sparisce con essa. La seconda è un export dentro l’hook di connessione, che raggiunge ogni processo che l’hook avvia dopo quel punto. Differiscono per portata e durata, non per sintassi, e questa differenza decide la maggior parte dei guasti.
| Property | Prefix on the command | Export from the hook |
|---|---|---|
| Who receives it | That invocation only | Children the hook starts |
| Lifetime | Until the process exits | Until the hook's own session ends |
| Leakage | Scoped to one command | Applies to later commands in that session |
| Repeat cost | Every invocation | Once per connection |
| Works for an open editor | No, unless the editor is started with it | No |
La tabella fa sembrare l’hook economico e nasconde il conto reale: seleziona un endpoint privato anche per comandi che non hanno nulla a che fare con l’attività. Leggi ogni riga come un vincolo, non come una preferenza. Se l’endpoint cambia per attività, il prefisso vince in precisione anche se costa una battuta di tasto.
Perché l’hook non può raggiungere una shell già aperta
Le variabili d’ambiente vengono consegnate a un processo quando si crea l’immagine del processo. Una shell avviata prima della connessione conserva la copia che ha ricevuto, e un export eseguito dentro l’hook non è una diffusione a ogni processo della macchina. Solo i figli propri dell’hook la ereditano. I figli propri di una shell prendono ciò che la shell detiene nel momento in cui partono, ed è per questo che lo stesso comando può funzionare in un terminale e fallire in un altro.
Lo stesso vale per un editor grafico. Il suo host delle estensioni, il terminale integrato e il server linguistico in background sono stati biforcati all’avvio e tengono copie proprie. Riaprire una cartella non riavvia necessariamente quei figli, quindi l’impostazione aggiunta non arriva comunque mai.
Il test meno costoso è stampare la variabile dal punto che fallisce, non dalla shell che funziona. Se il processo che fallisce è partito prima del tunnel, l’export non ha mai avuto possibilità.
La forma per comando, scritta
Un prefisso mantiene la scelta visibile nel comando che la usa, il che aiuta quando l’endpoint cambia tra un’attività e l’altra:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Il comando è illustrativo: my-work-tool è un segnaposto e INTERNAL_API non è uno standard VPN, quindi sostituisci con l’impostazione documentata del programma che esegui davvero e con il tuo host approvato. Non mettere un token o una password sulla stessa riga, perché finiscono nella cronologia della shell.
Quando più comandi appartengono a un’unica attività, un breve script wrapper rivisto imposta le variabili e poi li avvia. Così resta una sola definizione senza rendere il valore globale per ogni comando futuro nel terminale.
Ricarica, riavvia o lascia stare
Per uno strumento già in esecuzione, preferisci il suo ricaricamento o il suo profilo di workspace quando ne ha uno. Altrimenti salva il lavoro e riavvia il componente che legge l’impostazione, che spesso è un server linguistico e non la finestra dell’editor. Riavviare la finestra e dare per scontato che i processi figli abbiano seguito è proprio il motivo per cui un ricaricamento sembra non funzionare.
La disconnessione è una decisione separata. Mettere in pausa, chiudere o riconnettersi appartiene all’applicazione, e la variabile dell’endpoint non la controlla. Tratta la variabile come configurazione che sceglie un indirizzo, non come una regola su quale traffico di rete sia utilizzabile dopo, e le due questioni restano separabili.