Vous voulez qu'un téléchargement utilise un autre proxy, puis que tout revienne à la normale. Inutile d'éditer le fichier de démarrage de votre shell en espérant penser à l'annuler.

Pour une commande externe dans un shell de type POSIX, placez l'affectation avant la commande :

https_proxy=http://proxy.example:8080 curl https://example.com/

Utilisez le point de terminaison HTTP prévu pour ce téléchargement ; la liste de proxys HTTP propose des candidats pour des routes publiques autorisées. L'affectation est fournie à l'environnement de cette commande. Ses processus enfants peuvent hériter de la valeur, mais l'affectation ne remplace pas la valeur existante du shell parent une fois la commande terminée.

Le client décide toujours de ce qu'il lit

La syntaxe du shell crée un environnement ; elle n'impose pas une route réseau. Utilisez les noms de variables que l'application prend en charge. Des variables de contournement existantes, des options explicites de commande ou la configuration propre à l'application peuvent encore influencer le résultat.

La documentation de l'environnement Bash explique le comportement du préfixe de commande. Les commandes qui sont des fonctions shell, des commandes internes spéciales ou de la syntaxe shell peuvent avoir des règles de portée supplémentaires, c'est pourquoi l'exemple simple ci-dessus utilise délibérément un programme externe.

Pour plusieurs commandes, utilisez un sous-shell

(
  export http_proxy=http://proxy.example:8080
  export https_proxy=http://proxy.example:8080
  command-one
  command-two
)

Le groupe entre parenthèses s'exécute avec son propre environnement shell. Remplacez les noms de commandes illustratifs par les programmes que vous comptez exécuter. Ce schéma évite la séquence fragile consistant à sauvegarder une ancienne valeur, à l'écraser puis à la restaurer à la main après chaque échec possible.

Gardez les secrets hors des exemples copiés dans l'historique du shell. Rappelez-vous aussi que sudo peut filtrer l'environnement ; une variable visible pour la commande externe n'est pas transmise automatiquement à travers chaque frontière de privilèges. La portée temporaire et le choix réel du proxy restent des questions distinctes.

Articles similaires