Voila mon probleme dans le but des mes etudes je dois recoder un shell.

Mon soucis est que en temps normal j'arrive a recuperer mon environnement.
Cependant je ne vois pas comment recreer cet environnement si l'utilisateur l'a desactive avant l'execution de mon shell.

un exemple


Avec tcsh
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
~> unsetenv *
~> env 
~> tcsh
> env
HOSTTYPE=NetBSD
VENDOR=intel
OSTYPE=NetBSD
MACHTYPE=i386
SHLVL=1
PWD=/nfs/s4/space/users/ept1/foubar_v
LOGNAME=foubar_v
USER=foubar_v
GROUP=ept1
HOST=grep
>
Avec Bash

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
~> unsetenv *
~> env
~> bash
bash-3.00$ env
PWD=/nfs/s4/space/users/ept1/foubar_v
SHLVL=1
_=/usr/bin/env
bash-3.00$
Et la l'environnement standard de mon shell

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
PWD=/u/ept1/foubar_v/rendu/c/proj/42sh
KRB5CCNAME=FILE:/tmp/krb5cc_71104_20426b
HOME=/u/ept1/foubar_v
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin:/usr/pkg/sbin:/usr/site/bin:/usr/site/sbin:/usr/local/bin:/usr/local/sbin:/usr/school/bin:/usr/school/sbin:/usr/pie/bin:/usr/pie/sbin:/usr/X11R6/bin:/usr/X11R6/sbin:/u/ept1/foubar_v/bin:/u/ept1/foubar_v/sbin:/u/ept1/foubar_v/mbim
HOST=grep
USER=foubar_v
GROUP=ept1
LOGNAME=foubar_v
VENDOR=intel
SHELL=/bin/shells/ept1
SHLVL=2
DISPLAY=:0.0
HOSTTYPE=NetBSD
NS_USER_LINK=ns_user_link_grep_6903
OSTYPE=NetBSD
MACHTYPE=i386
TERM=xterm
WINDOWID=33554446
TERMCAP=xterm|vs100|xterm terminal emulator (X Window System):am:bs:km:mi:ms:ut:xn:co#142:it#8:li#66:Co#8:pa#64:AB=\E[4%dm:AF=\E[3%dm:op=\E[m:@1=\EOE:@7=\EOF:@8=\EOM:k;=\E[21~:ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ec=\E[%dX:ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[m\E7\E[r\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h::ZZ=0x80ae400:kb=\010:
PAGER=less
EDITOR=emacs
XTERM_OPTS=-T grep@foubar_v -n grep@foubar_v -ls
PROMPT=< %b42sh [%t] >
Ma question est quelle est la maniere la plus simple de retrouver ces informations. Car si je n'est pas cette base d'environnement mon programme me renvoit un SIGSEV .


Merci pour vos futures reponses