GSL и переменные среды

После постройки:

$ gcc generator.c -lm  -lgsl -lgslcblas -lm

код:

#include <stdio.h>
#include <gsl/gsl_rng.h>
gsl_rng * r;
/* global generator */
int main (void)
{
    const gsl_rng_type * T;
    gsl_rng_env_setup();
    T = gsl_rng_default;
    r = gsl_rng_alloc (T);
    printf ("generator type: %s\n", gsl_rng_name (r));
    printf ("seed = %lu\n", gsl_rng_default_seed);
    printf ("first value = %lu\n", gsl_rng_get (r));
    gsl_rng_free (r);
    return 0;
}

И затем запустите его так:

$ ./a.out

Я получил:

generator type: mt19937
seed = 0
first value = 4293858116

If I do:

$ GSL_RNG_SEED=1  GSL_RNG_TYPE="taus" ./a.out

Я получил:

GSL_RNG_TYPE=taus
GSL_RNG_SEED=1
generator type: taus
seed = 1
first value = 802792108

Но после выполнения:

$ GSL_RNG_SEED=1
$ GSL_RNG_TYPE="taus"
$ ./a.out

Я получаю тот же результат, что и в первый раз:

generator type: mt19937
seed = 0
first value = 4293858116

Почему исполняемый файл не получает значения переменных окружения (GSL_RNG_SEED=1 и GSL_RNG_TYPE="taus") последним способом?


person jruiz    schedule 23.01.2016    source источник


Ответы (1)


Вы должны использовать экспорт для установки переменных среды. Таким образом, 1_

person Evers    schedule 23.01.2016