Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

bash: initialiser environnement particulier

2 réponses
Avatar
Jérémy Prego
bonjour,

je vais essayer d'expliquer ma demande particulière, mais je suis
convaincu que c'est possible :)

j'aimerai parfois lancer un bash avec d'autres variables que celle
défini par défaut par exemple au lancement d'un bash, exporter la
variable http_proxy ou encore la variable TZ. par contre, faut que se
soit juste sur le bash que j'ai choisi. j'ai bien essayé de mettre des
arguments au lancement de bash par exemple, /bin/bash && export
http_proxy=xx.xx.xx.x.xx:3128/ mais ça ne semble pas fonctionné comme ça.

faut-il que je crée un fichier d'initialisation bash alternatif et
appelé ce fichier au lancement de mon bash particulier ?

comment feriez vous ? :)

debian testing.

Merci,

Jerem

2 réponses

Avatar
=c3
Bonjour,
Jérémy Prego, par un beau matin d'été :
j'aimerai parfois lancer un bash avec d'autres variables que
celle défini par défaut par exemple au lancement d'un bash,
exporter la variable http_proxy ou encore la variable TZ. par
contre, faut que se soit juste sur le bash que j'ai choisi.
j'ai bien essayé de mettre des arguments au lancement de bash
par exemple, /bin/bash && export
http_proxy=xx.xx.xx.x.xx:3128/ mais ça ne semble pas
fonctionné comme ça.
faut-il que je crée un fichier d'initialisation bash
alternatif et appelé ce fichier au lancement de mon bash
particulier ?

Il y a tout plein de façons de faire. Typiquement, vous pouvez
stocker les variables dans un fichier "~/.proxy.env" avec le
contenu suivant :
# Mon proxy
export http_proxy="http://www.example.org:3128"
export https_proxy="${http_proxy}"
echo "Proxy ${http_proxy} actif"
Fichier que vous pouvez ensuite charger dans votre session Bash
courante avec la commande "source" :
$ source ~/.proxy.env
Proxy http://www.example.org:3128 actif
$ echo $http_proxy
http://www.example.org:3128
Mais je ferais probablement différemment, abuser de "source"
peut entraîner des complications le jour où on voudrait changer
de shell.
comment feriez vous ? :)

J'appellerais un shell dans une session particulière via un
script dont la première partie est de régler l'environnement, et
la seconde est d'appeler le shell, qui héritera de ces variables
avec leurs valeurs. En admettant que le script en question soit
"~/bin/bashweb" et que "~/bin" soit dans votre path, le contenu
serait :
#! /bin/bash
set -e
# mon proxy
export http_proxy="http://www.example.org:3128"
export https_proxy="${http_proxy}"
# affichage du témoin d'activité
PS1="[proxy actif] ${PS1}"
# passer les arguments et laisser la main à la session
# de shell Bash interactive
exec bash "$@"
Je lancerais "bashweb" et j'aurais une session dédiée aux
activités nécessitant un accès au web, que je pourrais quitter
pour revenir en mode normal simplement en tapant "exit" :
$ env | grep http
$ bashweb
[proxy actif] $ env | grep http
https_proxy=http://www.example.org:3128
http_proxy=http://www.example.org:3128
[proxy actif] $ exit
$ env | grep http
$ _
Notez, le bricolage avec le prompt fonctionne tant que la
variable PS1 n'est pas écrasée dans "~/.bashrc".
Ce qui est bien, c'est que vous pouvez lancer n'importe quoi
dans votre script et pas seulement Bash ; par exemple il est
possible de lancer une session Octave, un navigateur, une « Wine
bottle », n'importe quel programme qui tire une partie de sa
configuration depuis les variables d'environnement.
Attention a ce que le script ne s'appelle pas accidentellement
lui-même, sinon Bash va boucler, en redémarrant le dit script
indéfiniment.
Sinon, ces genres de petits raccourcis restent envisageable :
alias set-proxy='
export http_proxy="http://www.example.org:3128"
export https_proxy="http://www.example.org:3128"
'
alias unset-proxy='
unset http_proxy https_proxy
'
debian testing.

Debian Sid... ;)
Amicalement,
--
Étienne Mollier
Avatar
Charles Plessy
Le Sun, Aug 12, 2018 at 10:40:11AM +0200, Jérémy Prego a écrit :
j'aimerai parfois lancer un bash avec d'autres variables que celle défini
par défaut par exemple au lancement d'un bash, exporter la variable
http_proxy ou encore la variable TZ. par contre, faut que se soit juste sur
le bash que j'ai choisi. j'ai bien essayé de mettre des arguments au
lancement de bash par exemple, /bin/bash && export
http_proxy=xx.xx.xx.x.xx:3128/ mais ça ne semble pas fonctionné comme ça.
faut-il que je crée un fichier d'initialisation bash alternatif et appelé ce
fichier au lancement de mon bash particulier ?
comment feriez vous ? :)

Peut-être installer environment-modules ?
http://modules.sourceforge.net/
Amicalement,
Charles
--
Charles Plessy Akano, Uruma, Okinawa, Japon
Debian Med packaging team http://www.debian.org/devel/debian-med
Pouète au travail https://mastodon.technology/@charles_plessy
Pouète à la maison https://framapiaf.org/@charles_plessy