Usare un proxy diverso per un singolo comando shell
Anteponete le variabili proxy a un comando quando volete una rotta temporanea senza modificare la shell padre né i file di avvio.
Volete che un download usi un proxy diverso e poi che tutto torni alla normalità. Non serve modificare il file di avvio della shell e sperare di ricordarvi di annullarlo.
Per un comando esterno in una shell in stile POSIX, mettete l'assegnazione prima del comando:
https_proxy=http://proxy.example:8080 curl https://example.com/
Usate l'endpoint HTTP previsto per quel download; la lista di proxy HTTP offre candidati per rotte pubbliche consentite. L'assegnazione viene fornita all'ambiente di quel comando. I suoi processi figli possono ereditare il valore, ma l'assegnazione non sostituisce il valore esistente della shell padre dopo che il comando termina.
Il client decide comunque cosa leggere
La sintassi della shell crea un ambiente; non impone una rotta di rete. Usate i nomi delle variabili supportati dall'applicazione. Variabili di bypass esistenti, opzioni esplicite del comando o la configurazione dell'applicazione stessa possono ancora influenzare il risultato.
La documentazione sull'ambiente di Bash spiega il comportamento del prefisso del comando. I comandi che sono funzioni della shell, builtin speciali o sintassi della shell possono avere regole di ambito aggiuntive, perciò l'esempio semplice qui sopra usa deliberatamente un programma esterno.
Per più comandi, usate una subshell
(
export http_proxy=http://proxy.example:8080
export https_proxy=http://proxy.example:8080
command-one
command-two
)
Il gruppo tra parentesi viene eseguito con il proprio ambiente shell. Sostituite i nomi dei comandi illustrativi con i programmi che intendete eseguire. Questo schema evita la sequenza fragile di salvare un vecchio valore, sovrascriverlo e ripristinarlo a mano dopo ogni possibile errore.
Tenete i segreti fuori dagli esempi copiati nella cronologia della shell. Ricordate anche che sudo può filtrare l'ambiente; una variabile visibile al comando esterno non viene trasmessa automaticamente attraverso ogni confine di privilegio. L'ambito temporaneo e la scelta effettiva del proxy restano questioni separate.