Переменные окружения
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 ["/foo/bar", "@", "@v#.#", "@stdlib"]. Если JULIA_LOAD_PATH установлена в пустую строку, она расширяется до пустого массива LOAD_PATH. Другими словами, пустая строка интерпретируется как массив с нулевыми элементами, а не как массив с одним элементом, содержащим пустую строку. Это поведение выбрано для возможности установки пустого пути загрузки через переменную окружения. Если вам нужен путь загрузки по умолчанию, сбросьте переменную окружения или, если необходимо присвоить значение, установите её в строку :.
В Windows элементы пути разделяются символом ;, как и в большинстве списков путей в Windows. Замените : на ; в абзаце выше.
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_PKG_SERVER
Используется Pkg.jl, для загрузки пакетов и обновления реестра. По умолчанию Pkg использует https://pkg.julialang.org для получения пакетов Julia. Вы можете использовать эту переменную окружения для выбора другого сервера. Кроме того, вы можете отключить использование протокола PkgServer и вместо этого получить доступ к пакетам напрямую с их хостов (GitHub, GitLab и т. д.) установив:
export JULIA_PKG_SERVER=""
Внешние приложения
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 установлено в значение auto, то количество потоков будет установлено в количество потоков процессора.
JULIA_NUM_THREADS необходимо определить перед запуском julia; определение его в startup.jl происходит слишком поздно на стадии запуска.
В Julia 1.5 и выше количество потоков также можно указать при запуске, используя аргумент командной строки -t/--threads.
Значение auto для $JULIA_NUM_THREADS требует Julia 1.7 или выше.
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's VTune™ Amplifier (
USE_INTEL_JITEVENTSустановлено в1в конфигурации сборки), или -
OProfile (
USE_OPROFILE_JITEVENTSустановлено в1в конфигурации сборки). -
Perf (
USE_PERF_JITEVENTSустановлено в1в конфигурации сборки). Эта интеграция включена по умолчанию.
ENABLE_GDBLISTENER
Если установлено любое значение, кроме 0, регистрация GDB кода Julia в релизных сборках. В отладочных сборках 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.7.0/manual/environment-variables/