Переменные окружения
Julia можно настроить с помощью ряда переменных окружения, как обычно для операционной системы, так и в портативном формате внутри Julia. Предположим, вы хотите установить переменную окружения JULIA_EDITOR в значение vim, тогда можно либо ввести ENV["JULIA_EDITOR"] = "vim" в REPL для изменения в каждом конкретном случае, либо добавить то же самое в файл конфигурации пользователя .juliarc.jl в домашнем каталоге пользователя для постоянного эффекта. Текущее значение той же переменной окружения определяется путем вычисления ENV["JULIA_EDITOR"].
Переменные окружения, используемые Julia, обычно начинаются с JULIA. Если Base.versioninfo вызывается с verbose равным true, то вывод будет содержать список определенных переменных окружения, относящихся к Julia, включая те, в имени которых присутствует JULIA.
Расположение файлов
JULIA_HOME
Абсолютный путь к каталогу, содержащему исполняемый файл Julia, который устанавливает глобальную переменную Base.JULIA_HOME. Если $JULIA_HOME не установлено, Julia определяет значение Base.JULIA_HOME во время выполнения.
Сам исполняемый файл это один из
$JULIA_HOME/julia $JULIA_HOME/julia-debug
по умолчанию.
Глобальная переменная Base.DATAROOTDIR определяет относительный путь от Base.JULIA_HOME к каталогу данных, связанному с Julia. Затем путь
$JULIA_HOME/$DATAROOTDIR/julia/base
определяет каталог, в котором Julia первоначально ищет исходные файлы (через Base.find_source_file()).
Аналогично, глобальная переменная Base.SYSCONFDIR определяет относительный путь к каталогу файла конфигурации. Затем Julia ищет файл juliarc.jl в
$JULIA_HOME/$SYSCONFDIR/julia/juliarc.jl $JULIA_HOME/../etc/julia/juliarc.jl
по умолчанию (через Base.load_juliarc()).
Например, на Linux-системе с исполняемым файлом Julia, расположенным по адресу /bin/julia, DATAROOTDIR из ../share, и SYSCONFDIR из ../etc, переменная JULIA_HOME будет установлена в значение /bin, путь поиска исходных файлов будет
/share/julia/base
и путь поиска глобальных файлов конфигурации будет
/etc/julia/juliarc.jl
JULIA_LOAD_PATH
Отделенный список абсолютных путей, которые должны быть добавлены к переменной LOAD_PATH. (В системах Unix-подобных системах разделитель путей :; в системах Windows разделитель путей ;.) Переменная LOAD_PATH используется Base.require и Base.load_in_path() для поиска кода; по умолчанию она содержит абсолютные пути
$JULIA_HOME/../local/share/julia/site/v$(VERSION.major).$(VERSION.minor) $JULIA_HOME/../share/julia/site/v$(VERSION.major).$(VERSION.minor)
Таким образом, например, версия 0.6 Julia на Linux-системе с исполняемым файлом Julia по адресу /bin/julia будет иметь по умолчанию LOAD_PATH
/local/share/julia/site/v0.6 /share/julia/site/v0.6
JULIA_PKGDIR
Путь к родительскому каталогу Pkg.Dir._pkgroot() для репозиториев пакетов Julia, специфичных для версии. Если путь относительный, то он относится к рабочей директории. Если $JULIA_PKGDIR не установлено, то Pkg.Dir._pkgroot() по умолчанию
$HOME/.julia
Затем местоположение репозитория Pkg.dir для данной версии Julia равно
$JULIA_PKGDIR/v$(VERSION.major).$(VERSION.minor)
Например, для пользователя Linux, чей домашний каталог /home/alice, каталог, содержащий репозитории пакетов, по умолчанию будет
/home/alice/.julia
и репозиторий пакетов для версии 0.6 Julia будет
/home/alice/.julia/v0.6
JULIA_HISTORY
Абсолютный путь Base.REPL.find_hist_file() к файлу истории REPL. Если $JULIA_HISTORY не установлено, то Base.REPL.find_hist_file() по умолчанию
$HOME/.julia_history
JULIA_PKGRESOLVE_ACCURACY
Положительное значение Int, которое определяет, сколько времени подпрограмма max-sum MaxSum.maxsum() решателя зависимостей пакетов Base.Pkg.resolve будет тратить на попытку удовлетворения ограничений перед отказом: по умолчанию это значение 1, и большие значения соответствуют большим затратам времени.
Предположим, значение $JULIA_PKGRESOLVE_ACCURACY равно n. Тогда
количество итераций до децимации равно
20*n,количество итераций между шагами децимации равно
10*n, ина шагах децимации, максимум один из каждых
20*nпакетов подвергается децимации.
Внешние приложения
JULIA_SHELL
Абсолютный путь к оболочке, которую Julia должна использовать для выполнения внешних команд (через Base.repl_cmd()). По умолчанию используется переменная окружения $SHELL, и если $SHELL не установлена, то используется /bin/sh.
В Windows эта переменная окружения игнорируется, и внешние команды выполняются непосредственно.
JULIA_EDITOR
Редактор, возвращаемый Base.editor() и используемый в, например, Base.edit, ссылающийся на команду предпочтительного редактора, например, vim.
$JULIA_EDITOR имеет приоритет над $VISUAL, который в свою очередь имеет приоритет над $EDITOR. Если ни одна из этих переменных окружения не установлена, то редактор определяется как open в Windows и OS X, или /etc/alternatives/editor если он существует, или emacs в противном случае.
$JULIA_EDITOR не используется при определении редактора для Base.Pkg.edit: эта функция проверяет только $VISUAL и $EDITOR.
Параллелизация
JULIA_CPU_CORES
Переопределяет глобальную переменную Base.Sys.CPU_CORES, количество доступных логических ядер процессора.
JULIA_WORKER_TIMEOUT
Значение типа Float64, устанавливающее значение Base.worker_timeout() (по умолчанию: 60.0). Эта функция возвращает количество секунд, которое процесс-работник будет ждать от процесса-мастера для установления соединения перед завершением.
JULIA_NUM_THREADS
Неотрицательное 64-битное целое число (uint64_t) устанавливающее максимальное количество потоков, доступных для Julia. Если значение $JULIA_NUM_THREADS превышает количество доступных физических ядер процессора, то количество потоков устанавливается в количество ядер. Если $JULIA_NUM_THREADS не положительно или не установлено, или если количество ядер процессора нельзя определить через системные вызовы, то количество потоков устанавливается в 1.
JULIA_THREAD_SLEEP_THRESHOLD
Если установлено значение в виде строки, начинающейся с подстроки "infinite" (регистронезависимо), то вращающиеся потоки никогда не спят. В противном случае $JULIA_THREAD_SLEEP_THRESHOLD интерпретируется как 64-битное целое без знака (uint64_t) и задаёт время в наносекундах, через которое вращающиеся потоки должны перейти в состояние ожидания.
JULIA_EXCLUSIVE
Если установлено значение, отличное от 0, то политика потоков Julia соответствует запуску на выделенном компьютере: главный поток находится на процессоре 0, а потоки привязаны. В противном случае Julia позволяет операционной системе обрабатывать политику потоков.
Форматирование REPL
Переменные окружения, определяющие, как должен форматироваться вывод REPL на терминале. Как правило, эти переменные должны быть установлены в ANSI-последовательности экранов терминала. Julia предоставляет высокоуровневый интерфейс с аналогичной функциональностью: см. раздел Взаимодействие с Julia.
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 (just-in-time).
Эта переменная среды действует только в том случае, если Julia была скомпилирована с поддержкой профилирования JIT, используя либо
Intel's VTune™ Amplifier (
USE_INTEL_JITEVENTSустановлено в1в конфигурации сборки), илиOProfile (
USE_OPROFILE_JITEVENTSустановлено в1в конфигурации сборки).
JULIA_LLVM_ARGS
Аргументы, которые будут переданы в бэкэнд LLVM.
Эта переменная среды действует только в том случае, если Julia была скомпилирована с JL_DEBUG_BUILD установленным — в частности, исполняемый файл julia-debug всегда компилируется с этой переменной сборки.
JULIA_DEBUG_LOADING
Если установлено, Julia выводит подробную информацию о кэше в процессе загрузки Base.require.
© 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/release-0.6/manual/environment-variables/