Fedora-Fr - Communauté francophone Fedora - Linux

Communauté francophone des utilisateurs de la distribution Linux Fedora.

  

Dernière news : Fedora 30 est mort ce soir

#1 24/04/2020 12:33:51

didierg
Modérateur
Modérateur
Inscription : 11/07/2005
Messages : 5 251

[Résolu] Bash functions affichées par la commande env

Bonjour,

Je viens de découvrir que la commande env affichait après les variables d'environnement 3 fonctions:

BASH_FUNC_switchml%%=() {  typeset swfound=1;
 if [ "${MODULES_USE_COMPAT_VERSION:-0}" = '1' ]; then
 typeset swname='main';
 if [ -e /usr/share/Modules/libexec/modulecmd.tcl ]; then
 typeset swfound=0;
 unset MODULES_USE_COMPAT_VERSION;
 fi;
 else
 typeset swname='compatibility';
 if [ -e /usr/share/Modules/libexec/modulecmd-compat ]; then
 typeset swfound=0;
 MODULES_USE_COMPAT_VERSION=1;
 export MODULES_USE_COMPAT_VERSION;
 fi;
 fi;
 if [ $swfound -eq 0 ]; then
 echo "Switching to Modules $swname version";
 source /usr/share/Modules/init/bash;
 else
 echo "Cannot switch to Modules $swname version, command not found";
 return 1;
 fi
}


BASH_FUNC_module%%=() {  _module_raw "$@" 2>&1
}
BASH_FUNC_scl%%=() {  if [ "$1" = "load" -o "$1" = "unload" ]; then
 eval "module $@";
 else
 /usr/bin/scl "$@";
 fi
}


BASH_FUNC__module_raw%%=() {  unset _mlshdbg;
 if [ "${MODULES_SILENT_SHELL_DEBUG:-0}" = '1' ]; then
 case "$-" in 
 *v*x*)
 set +vx;
 _mlshdbg='vx'
 ;;
 *v*)
 set +v;
 _mlshdbg='v'
 ;;
 *x*)
 set +x;
 _mlshdbg='x'
 ;;
 *)
 _mlshdbg=''
 ;;
 esac;
 fi;
 unset _mlre _mlIFS;
 if [ -n "${IFS+x}" ]; then
 _mlIFS=$IFS;
 fi;
 IFS=' ';
 for _mlv in ${MODULES_RUN_QUARANTINE:-};
 do
 if [ "${_mlv}" = "${_mlv##*[!A-Za-z0-9_]}" -a "${_mlv}" = "${_mlv#[0-9]}" ]; then
 if [ -n "`eval 'echo ${'$_mlv'+x}'`" ]; then
 _mlre="${_mlre:-}${_mlv}_modquar='`eval 'echo ${'$_mlv'}'`' ";
 fi;
 _mlrv="MODULES_RUNENV_${_mlv}";
 _mlre="${_mlre:-}${_mlv}='`eval 'echo ${'$_mlrv':-}'`' ";
 fi;
 done;
 if [ -n "${_mlre:-}" ]; then
 eval `eval ${_mlre}/usr/bin/tclsh /usr/share/Modules/libexec/modulecmd.tcl bash '"$@"'`;
 else
 eval `/usr/bin/tclsh /usr/share/Modules/libexec/modulecmd.tcl bash "$@"`;
 fi;
 _mlstatus=$?;
 if [ -n "${_mlIFS+x}" ]; then
 IFS=$_mlIFS;
 else
 unset IFS;
 fi;
 unset _mlre _mlv _mlrv _mlIFS;
 if [ -n "${_mlshdbg:-}" ]; then
 set -$_mlshdbg;
 fi;
 unset _mlshdbg;
 return $_mlstatus
}

De mémoire, je ne me souviens pas que c'était le cas avant.

La seule information que j'ai trouvé est celle-ci: https://access.redhat.com/discussions/4124031 mais n'étant pas client RedHat je ne peux pas voir la discussion.

Quelqu'un a-t-il une explication sur ces fonctions ?

Hors ligne

#2 24/04/2020 15:13:17

madko
Contributeur Fedora et Linuxé depuis 1994
Modérateur
Lieu : Noisy the Great (9³)
Inscription : 22/12/2006
Messages : 8 387
Site Web

Re : [Résolu] Bash functions affichées par la commande env

Bonjour

A priori ce n'est pas nouveau d'avoir des fonctions dans les variables d'env pour qu'elles soient plus dynamiques. Leurs noms et visibilité à par contre bien évoluée suite à des failles liées à cette fonctionnalité https://en.wikipedia.org/wiki/Shellshock_(software_bug)

Et le lien redhat, même avec un compte, y'a pas de réponse :p

Celles que tu as postée ont l'air d'être liées à SCL. Je sais pas si tu t'en sers?

Si je lance bash, j'ai bien des trucs qui y ressemblent:

[edouard@taran ~]$ env|grep BASH_FUNC
BASH_FUNC_switchml%%=() {  typeset swfound=1;
BASH_FUNC_module%%=() {  _module_raw "$@" 2>&1
BASH_FUNC_scl%%=() {  if [ "$1" = "load" -o "$1" = "unload" ]; then
BASH_FUNC__module_raw%%=() {  unset _mlshdbg;

Linux, ya moins bien, mais c'est plus chèr!!!
Fedora 32 WorkStation sur HP 850 G5
Fedora 32 SilverBlue sur Lenovo Thinkpad Yoga 12

Hors ligne

#3 30/04/2020 18:23:41

madko
Contributeur Fedora et Linuxé depuis 1994
Modérateur
Lieu : Noisy the Great (9³)
Inscription : 22/12/2006
Messages : 8 387
Site Web

Re : [Résolu] Bash functions affichées par la commande env

Est-ce que ça répond à ta question ?


Linux, ya moins bien, mais c'est plus chèr!!!
Fedora 32 WorkStation sur HP 850 G5
Fedora 32 SilverBlue sur Lenovo Thinkpad Yoga 12

Hors ligne

#4 19/05/2020 14:33:19

didierg
Modérateur
Modérateur
Inscription : 11/07/2005
Messages : 5 251

Re : [Résolu] Bash functions affichées par la commande env

madko a écrit :

Est-ce que ça répond à ta question ?

Merci pour ta réponse qui confirme que c'est normal.

Ceci étant je ne me suis jamais posé la question de savoir si j'utilisais SCL.

Hors ligne

#5 19/05/2020 22:35:13

madko
Contributeur Fedora et Linuxé depuis 1994
Modérateur
Lieu : Noisy the Great (9³)
Inscription : 22/12/2006
Messages : 8 387
Site Web

Re : [Résolu] Bash functions affichées par la commande env

En fait je l'ai pas mais j'ai quand même ces fonctions ... Doit nous manquer un bout d'explication


Linux, ya moins bien, mais c'est plus chèr!!!
Fedora 32 WorkStation sur HP 850 G5
Fedora 32 SilverBlue sur Lenovo Thinkpad Yoga 12

Hors ligne

Pied de page des forums