Переменные окружения
Julia можно настроить с помощью ряда переменных окружения, установленных обычным для каждой операционной системы способом или переносным способом непосредственно в Julia. Предположим, что вы хотите установить переменную окружения JULIA_EDITOR в значение vim, вы можете ввести ENV["JULIA_EDITOR"] = "vim" (например, в REPL), чтобы внести это изменение в каждом отдельном случае, или добавить то же самое в файл конфигурации пользователя ~/.julia/config/startup.jl в домашнем каталоге пользователя, чтобы действие имело постоянный эффект. Текущее значение той же переменной окружения можно определить, вычислив ENV["JULIA_EDITOR"].
Переменные окружения, используемые Julia, обычно начинаются с JULIA. Если InteractiveUtils.versioninfo вызывается с ключевым словом verbose=true, то вывод будет содержать список определенных переменных окружения, относящихся к Julia, включая те, в имени которых встречается JULIA.
Некоторые переменные, такие как JULIA_NUM_THREADS и JULIA_PROJECT, должны быть установлены до запуска Julia, поэтому добавление их в ~/.julia/config/startup.jl слишком поздно на стадии запуска. В Bash переменные окружения можно установить вручную, выполнив, например, export JULIA_NUM_THREADS=4 перед запуском Julia, или добавив ту же команду в -/.bashrc или ~/.bash_profile, чтобы устанавливать переменную каждый раз при запуске Bash.
Расположение файлов
JULIA_BINDIR
Абсолютный путь к каталогу, содержащему исполняемый файл Julia, который устанавливает глобальную переменную Sys.BINDIR. Если $JULIA_BINDIR не задано, то Julia определяет значение Sys.BINDIR во время выполнения.
Сам исполняемый файл — это один из
$JULIA_BINDIR/julia $JULIA_BINDIR/julia-debug
по умолчанию.
Глобальная переменная Base.DATAROOTDIR определяет относительный путь от Sys.BINDIR к каталогу данных, связанному с Julia. Затем путь
$JULIA_BINDIR/$DATAROOTDIR/julia/base
определяет каталог, в котором Julia изначально ищет исходные файлы (через Base.find_source_file()).
Аналогично, глобальная переменная Base.SYSCONFDIR определяет относительный путь к каталогу файла конфигурации. Затем Julia ищет файл startup.jl по пути
$JULIA_BINDIR/$SYSCONFDIR/julia/startup.jl $JULIA_BINDIR/../etc/julia/startup.jl
по умолчанию (через Base.load_julia_startup()).
Например, у установки Linux с исполняемым файлом Julia по пути /bin/julia, каталогом DATAROOTDIR в ../share и каталогом SYSCONFDIR в ../etc будет JULIA_BINDIR установлено в /bin, путь поиска исходных файлов —
/share/julia/base
и путь поиска глобального файла конфигурации —
/etc/julia/startup.jl
JULIA_PROJECT
Путь к каталогу, который указывает, какой проект должен быть начальным активным проектом. Установка этой переменной окружения имеет тот же эффект, что и указание параметра запуска --project, но --project имеет более высокий приоритет. Если переменная установлена в @., то Julia пытается найти каталог проекта, который содержит файл Project.toml или JuliaProject.toml в текущем каталоге и его родительских каталогах. См. также главу о Загрузке кода.
JULIA_PROJECT должна быть определена до запуска julia; определение её в startup.jl происходит слишком поздно на стадии запуска.
JULIA_LOAD_PATH
Переменная окружения JULIA_LOAD_PATH используется для заполнения глобальной переменной Julia LOAD_PATH, которая определяет, какие пакеты можно загрузить с помощью import и using (см. Загрузка кода).
В отличие от переменной оболочки PATH, пустые записи в JULIA_LOAD_PATH расширяются до значения по умолчанию LOAD_PATH, ["@", "@v#.#", "@stdlib"], когда происходит заполнение LOAD_PATH. Это позволяет легко добавлять, вставлять и т.д. значения пути загрузки в скриптах оболочки независимо от того, установлено ли значение JULIA_LOAD_PATH или нет. Например, чтобы добавить в начало LOAD_PATH каталог /foo/bar, выполните
export JULIA_LOAD_PATH="/foo/bar:$JULIA_LOAD_PATH"
Если переменная окружения JULIA_LOAD_PATH уже установлена, её старое значение будет добавлено в начало с помощью /foo/bar. С другой стороны, если JULIA_LOAD_PATH не установлена, то она будет установлена в /foo/bar:, что будет эквивалентно добавлению LOAD_PATH к значению пути загрузки по умолчанию ["/foo/bar", "@", "@v#.#", "@stdlib"]. Если JULIA_LOAD_PATH установлена в пустую строку, она расширяется до пустого массива LOAD_PATH. Другими словами, пустая строка интерпретируется как массив с нулевым количеством элементов, а не массив с одним элементом, содержащим пустую строку. Такое поведение было выбрано для возможности установки пустого пути загрузки через переменную окружения. Если вам нужен путь загрузки по умолчанию, сбросьте переменную окружения или, если необходимо, установите её в строку :.
JULIA_DEPOT_PATH
Переменная окружения JULIA_DEPOT_PATH используется для заполнения глобальной переменной Julia DEPOT_PATH, которая управляет тем, где менеджер пакетов, а также механизмы загрузки кода Julia ищут реестры пакетов, установленные пакеты, именованные среды, клоны репозиториев, кэшированные скомпилированные изображения пакетов и файлы конфигурации.
В отличие от переменной оболочки PATH, но подобно JULIA_LOAD_PATH, пустые записи в JULIA_DEPOT_PATH расширяются до значения по умолчанию DEPOT_PATH. Это позволяет легко добавлять, вставлять и т.д. значение пути хранилища в скриптах оболочки независимо от того, установлено ли значение JULIA_DEPOT_PATH или нет. Например, чтобы добавить в начало DEPOT_PATH каталог /foo/bar, выполните
export JULIA_DEPOT_PATH="/foo/bar:$JULIA_DEPOT_PATH"
Если переменная окружения JULIA_DEPOT_PATH уже установлена, её старое значение будет добавлено в начало с помощью /foo/bar. С другой стороны, если JULIA_DEPOT_PATH не установлена, то она будет установлена в /foo/bar:, что приведет к добавлению /foo/bar в начало пути хранилища по умолчанию. Если JULIA_DEPOT_PATH установлена в пустую строку, она расширяется до пустого массива DEPOT_PATH. Другими словами, пустая строка интерпретируется как массив с нулевым количеством элементов, а не массив с одним элементом, содержащим пустую строку. Такое поведение было выбрано для возможности установки пустого пути хранилища через переменную окружения. Если вам нужен путь хранилища по умолчанию, сбросьте переменную окружения или, если необходимо, установите её в строку :.
JULIA_HISTORY
Абсолютный путь REPL.find_hist_file() к файлу истории REPL. Если $JULIA_HISTORY не установлено, то REPL.find_hist_file() по умолчанию
$HOME/.julia/logs/repl_history.jl
JULIA_PKGRESOLVE_ACCURACY
Положительное Int, определяющее, сколько времени подпрограмма max-sum MaxSum.maxsum() решателя зависимостей пакетов будет тратить на попытку удовлетворения ограничений, прежде чем сдаться: по умолчанию это значение равно 1, и большие значения соответствуют большему времени.
Предположим, что значение $JULIA_PKGRESOLVE_ACCURACY равно n. Тогда
- количество итераций до децимации равно
20*n, - количество итераций между шагами децимации равно
10*n, и - на шагах децимации не более одного из каждых
20*nпакетов подвергается децимации.
Внешние приложения
JULIA_SHELL
Абсолютный путь к оболочке, с помощью которой Julia должна выполнять внешние команды (через Base.repl_cmd()). По умолчанию это переменная окружения $SHELL, и она переходит к /bin/sh, если $SHELL не задана.
В Windows эта переменная окружения игнорируется, и внешние команды выполняются напрямую.
JULIA_EDITOR
Редактор, возвращаемый InteractiveUtils.editor() и используемый, например, в InteractiveUtils.edit, ссылаясь на команду предпочитаемого редактора, например, vim.
$JULIA_EDITOR имеет приоритет над $VISUAL, которая, в свою очередь, имеет приоритет над $EDITOR. Если ни одна из этих переменных окружения не установлена, то редактором будет open в Windows и OS X или /etc/alternatives/editor, если она существует, или emacs в противном случае.
Параллелизация
JULIA_CPU_THREADS
Переопределяет глобальную переменную Base.Sys.CPU_THREADS, количество доступных логических процессоров.
JULIA_WORKER_TIMEOUT
A Float64, устанавливающий значение Distributed.worker_timeout() (по умолчанию 60.0). Эта функция возвращает количество секунд, которое процесс-работник будет ожидать от главного процесса для установления соединения, прежде чем завершится.
JULIA_NUM_THREADS
Неотрицательное 64-битное целое число (uint64_t) устанавливает максимальное количество потоков, доступных для Julia. Если $JULIA_NUM_THREADS превышает количество доступных физических процессоров, то количество потоков устанавливается равным количеству процессоров. Если $JULIA_NUM_THREADS не положительное или не установлено, или если количество процессоров не может быть определено через системные вызовы, то количество потоков устанавливается равным 1.
JULIA_NUM_THREADS должна быть определена до запуска julia; определение её в startup.jl происходит слишком поздно на стадии запуска.
JULIA_THREAD_SLEEP_THRESHOLD
Если установлено значение, начинающееся (без учёта регистра) с "infinite", то вращающиеся потоки никогда не спят. В противном случае $JULIA_THREAD_SLEEP_THRESHOLD интерпретируется как неотрицательное 64-битное целое число (uint64_t) и задаёт продолжительность, в наносекундах, по истечении которой вращающиеся потоки должны заснуть.
JULIA_EXCLUSIVE
Если установлено значение, отличное от 0, то политика потоков Julia соответствует работе на выделенном компьютере: главный поток находится на процессоре 0, и потоки привязываются к процессорам. В противном случае Julia позволяет операционной системе обрабатывать политику потоков.
Форматирование REPL
Переменные окружения, определяющие, как должен форматироваться вывод REPL в терминале. Обычно эти переменные должны быть установлены в ANSI последовательности escape-команд терминала. Julia предоставляет высокоуровневый интерфейс с большей частью той же функциональности; см. раздел о The Julia REPL.
JULIA_ERROR_COLOR
Форматирование Base.error_color() (по умолчанию: светло-красный, "\033[91m") которое должны иметь ошибки в терминале.
JULIA_WARN_COLOR
Форматирование Base.warn_color() (по умолчанию: жёлтый, "\033[93m") которое должны иметь предупреждения в терминале.
JULIA_INFO_COLOR
Форматирование Base.info_color() (по умолчанию: голубой, "\033[36m") которое должна иметь информация в терминале.
JULIA_INPUT_COLOR
Форматирование Base.input_color() (по умолчанию: обычный, "\033[0m") которое должен иметь ввод в терминале.
JULIA_ANSWER_COLOR
Форматирование Base.answer_color() (по умолчанию: обычный, "\033[0m") которое должен иметь вывод в терминале.
JULIA_STACKFRAME_LINEINFO_COLOR
Форматирование Base.stackframe_lineinfo_color() (по умолчанию: полужирный, "\033[1m") которое должна иметь информация о строках во время трассировки стека в терминале.
JULIA_STACKFRAME_FUNCTION_COLOR
Форматирование Base.stackframe_function_color() (по умолчанию: полужирный, "\033[1m") которое должны иметь вызовы функций во время трассировки стека в терминале.
Отладка и профилирование
JULIA_GC_ALLOC_POOL, JULIA_GC_ALLOC_OTHER, JULIA_GC_ALLOC_PRINT
Если установлены, эти переменные окружения принимают строки, которые необязательно начинаются с символа 'r', за которым следует интерполяция строки с двоеточием-разделенным списком из трёх 64-битных целых чисел со знаком (int64_t). Эта тройка целых чисел a:b:c представляет арифметическую прогрессию a, a + b, a + 2*b, ... c.
- Если это
n-й раз, когдаjl_gc_pool_alloc()был вызван, иnпринадлежит арифметической прогрессии, представленной$JULIA_GC_ALLOC_POOL, то происходит принудительное выполнение сборки мусора. - Если это
n-й раз, когдаmaybe_collect()был вызван, иnпринадлежит арифметической прогрессии, представленной$JULIA_GC_ALLOC_OTHER, то происходит принудительное выполнение сборки мусора. - Если это
n-й раз, когдаjl_gc_collect()был вызван, иnпринадлежит арифметической прогрессии, представленной$JULIA_GC_ALLOC_PRINT, то выводятся подсчёты количества вызововjl_gc_pool_alloc()иmaybe_collect().
Если значение переменной среды начинается с символа 'r', то интервал между событиями сборки мусора случайным образом изменяется.
Эти переменные среды действуют только если Julia была скомпилирована с отладкой сборки мусора (то есть, если WITH_GC_DEBUG_ENV установлено в 1 в конфигурации сборки).
JULIA_GC_NO_GENERATIONAL
Если установлено значение отличное от 0, то сборщик мусора Julia никогда не выполняет "быстрые проходы" по памяти.
Эта переменная среды действует только если Julia была скомпилирована с отладкой сборки мусора (то есть, если WITH_GC_DEBUG_ENV установлено в 1 в конфигурации сборки).
JULIA_GC_WAIT_FOR_DEBUGGER
Если установлено значение отличное от 0, то сборщик мусора Julia будет ожидать подключения отладчика вместо аварийного завершения при возникновении критической ошибки.
Эта переменная среды действует только если Julia была скомпилирована с отладкой сборки мусора (то есть, если WITH_GC_DEBUG_ENV установлено в 1 в конфигурации сборки).
ENABLE_JITPROFILING
Если установлено значение отличное от 0, то компилятор создаст и зарегистрирует обработчик событий для профилирования в реальном времени (JIT).
Эта переменная среды действует только если Julia была скомпилирована с поддержкой профилирования JIT, используя либо
- Инструментарий Intel's VTune™ Amplifier (
USE_INTEL_JITEVENTSустановлено в1в конфигурации сборки), или -
OProfile (
USE_OPROFILE_JITEVENTSустановлено в1в конфигурации сборки).
JULIA_LLVM_ARGS
Аргументы, которые нужно передать в бэкенд LLVM.
JULIA_DEBUG_LOADING
Если установлено, то Julia выводит подробную информацию о кэше в процессе загрузки Base.require.
© 2009–2019 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.2.0/manual/environment-variables/