Salut,<br><br>Am rezolvat dilema :<br><br>Cod :<br>========================================<br>#include &lt;stdlib.h&gt;<br>#include &lt;stdio.h&gt;<br>#include &lt;string.h&gt;<br><br>int main(int argc, char ** argv){<br>
        char * rez ;<br>        char * var = (char *) malloc (10);<br>        if (! var) return -1;<br>        strcpy(var,&quot;$HOME&quot;);<br><br>        printf(&quot; var = %s \n&quot;, var);<br>        rez = getenv(var);<br>
        printf(&quot; rez pentru var  %s =%s \n&quot;, rez, var);<br><br>        rez = getenv(var+1);<br>        printf(&quot; rez pentru var+1  : %s = %s \n&quot;, rez, var+1);<br><br>        free(var);<br><br>        //cazul cu argv[1] = &quot;$HOME&quot;<br>
        printf(&quot;argv[1] = %s \n&quot;, argv[1]);<br>        rez = getenv(argv[1]);<br>        printf(&quot;pentru argv[1] = var mediu = %s \n&quot;, rez);<br>        free(rez);<br>        return 0;<br>}<br>===========================================<br>
<br><br>Rezultat :<br>==========================================<br>so@elmer:~/teme/tema1_linux/teste_moi$ ./a.out $HOME<br> var = $HOME<br> rez pentru var  (null) =$HOME<br> rez pentru var+1  : /home/so = HOME<br>argv[1] = /home/so<br>
pentru argv[1] = var mediu = (null)<br>so@elmer:~/teme/tema1_linux/teste_moi$<br>============================================<br><br>Concluzia mea (nu stiu daca este corecta in totalitate) : <br>  - deja cand ii dau ca parametru $HOME, el face interpretarea si in argv[1] nu imi va stoca $HOME ci chiar valorea variabilei si pe urma va face un getenv(&quot;/home/so&quot;) si nu o va gasi si va intoarce 0<br>
  - legat de 1) :  &quot;<i>De ce faci argv[1] + 1? E suficient argv[1]</i>. &quot; getenv primeste ca parametru numele variabilei de mediu fara $   [am testat exemplele cu var si var +1).<br><br><br>Multumesc<br>Ana<br>