Переменные окружения
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 или нет. Например, чтобы добавить каталог /foo/bar в начало LOAD_PATH, просто сделайте
export JULIA_LOAD_PATH="/foo/bar:$JULIA_LOAD_PATH"
Если переменная окружения JULIA_LOAD_PATH уже установлена, ее старое значение будет добавлено в начало с помощью /foo/bar. С другой стороны, если JULIA_LOAD_PATH не установлена, то она будет установлена в /foo/bar:, что приведет к добавлению LOAD_PATH в начало значения пути загрузки по умолчанию. Если JULIA_LOAD_PATH установлена в пустую строку, она расширяется до пустого массива LOAD_PATH. Другими словами, пустая строка интерпретируется как массив нулевой длины, а не как массив из одного элемента пустой строки. Такое поведение было выбрано для того, чтобы можно было установить пустой путь загрузки с помощью переменной окружения. Если вам нужен путь загрузки по умолчанию, либо снимите переменную окружения, либо, если она должна иметь значение, установите ее в строку :.
JULIA_DEPOT_PATH
Переменная окружения JULIA_DEPOT_PATH используется для заполнения глобальной переменной Julia DEPOT_PATH, которая определяет, где менеджер пакетов, а также механизмы загрузки кода Julia ищут реестры пакетов, установленные пакеты, именованные окружения, клоны репозиториев, кэшированные скомпилированные образы пакетов, файлы конфигурации и местоположение по умолчанию файла истории REPL.
В отличие от переменной оболочки PATH, но аналогично JULIA_LOAD_PATH, пустые записи в JULIA_DEPOT_PATH расширяются до значения по умолчанию DEPOT_PATH. Это позволяет легко добавлять, вставлять и т.д. значения пути к репозиторию в скриптах оболочки независимо от того, установлено ли значение JULIA_DEPOT_PATH или нет. Например, чтобы добавить каталог /foo/bar в начало DEPOT_PATH, просто сделайте
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. Другими словами, пустая строка интерпретируется как массив нулевой длины, а не как массив из одного элемента пустой строки. Такое поведение было выбрано для того, чтобы можно было установить пустой путь к репозиторию с помощью переменной окружения. Если вам нужен путь к репозиторию по умолчанию, либо снимите переменную окружения, либо, если она должна иметь значение, установите ее в строку :.
В Windows элементы пути разделяются символом ;, как и в большинстве списков путей в Windows.
JULIA_HISTORY
Абсолютный путь REPL.find_hist_file() к файлу истории REPL. Если $JULIA_HISTORY не установлено, значение REPL.find_hist_file() по умолчанию
$(DEPOT_PATH[1])/logs/repl_history.jl
Внешние приложения
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
Число с плавающей точкой Float64, которое устанавливает значение Distributed.worker_timeout() (по умолчанию: 60.0). Эта функция возвращает количество секунд, в течение которого процесс-воркер будет ожидать подключения главного процесса, прежде чем завершится.
JULIA_NUM_THREADS
Беззнаковое 64-битное целое число (uint64_t) , которое устанавливает максимальное количество потоков, доступных Julia. Если $JULIA_NUM_THREADS не положительно или не установлено, или если количество потоков процессора невозможно определить через системные вызовы, то количество потоков устанавливается в 1.
JULIA_NUM_THREADS должна быть определена до запуска julia; определение её в startup.jl происходит слишком поздно в процессе запуска.
В Julia 1.5 и выше количество потоков также можно указать при запуске с помощью параметра командной строки -t/--threads.
JULIA_THREAD_SLEEP_THRESHOLD
Если установлено значение, начинающееся с подстроки "infinite" (нечувствительной к регистру), то потоки никогда не засыпают. В противном случае, $JULIA_THREAD_SLEEP_THRESHOLD интерпретируется как беззнаковое 64-битное целое число (uint64_t) и задаёт количество наносекунд, после которого вращающиеся потоки должны перейти в спящее состояние.
JULIA_EXCLUSIVE
Если установлено значение, отличное от 0, политика потоков Julia соответствует запуску на выделенном компьютере: главный поток находится на процессоре 0, а потоки привязаны к процессорам. В противном случае Julia позволяет операционной системе управлять политикой потоков.
Форматирование REPL
Переменные среды, определяющие, как должен форматироваться вывод REPL в терминале. Обычно эти переменные должны быть установлены в соответствии с ANSI-последовательностями управляющих кодов терминала. 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_DEBUG
Включить логирование отладки для файла или модуля, см. Logging для получения дополнительной информации.
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, компилятор создаст и зарегистрирует обработчик событий для профилирования «just-in-time» (JIT).
Эта переменная среды действует только в том случае, если Julia была скомпилирована с поддержкой профилирования JIT, используя либо
- Инструмент Intel VTune™ Amplifier (VTune™ Amplifier) (
USE_INTEL_JITEVENTSустановлено в1в конфигурации сборки), или -
OProfile (
USE_OPROFILE_JITEVENTSустановлено в1в конфигурации сборки). -
Perf (
USE_PERF_JITEVENTSустановлено в1в конфигурации сборки). Эта интеграция включена по умолчанию.
ENABLE_GDBLISTENER
Если установлено значение, отличное от 0, регистрирует Julia код для GDB в релизных сборках. В отладочных сборках Julia это всегда включено. Рекомендуется использовать вместе с -g 2.
JULIA_LLVM_ARGS
Аргументы, которые будут переданы бэкенду LLVM.
© 2009–2021 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.6.0/manual/environment-variables/