Переменные окружения
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_MAX_NUM_PRECOMPILE_FILES
Устанавливает максимальное количество различных экземпляров одного пакета, которые будут храниться в кэше предварительной компиляции (по умолчанию = 10).
Pkg.jl
JULIA_CI
Если установлено в true, это указывает серверу пакетов, что любые операции с пакетами являются частью системы непрерывной интеграции (CI) для сбора статистики использования пакетов.
JULIA_NUM_PRECOMPILE_TASKS
Количество параллельных задач, используемых при предварительной компиляции пакетов. См. Pkg.precompile.
JULIA_PKG_DEVDIR
Директория по умолчанию, используемая Pkg.develop для загрузки пакетов.
JULIA_PKG_IGNORE_HASHES
Если установлено в 1, это проигнорирует неверные хэши в артефактах. Это следует использовать с осторожностью, так как это отключает проверку загрузок, но может решить проблемы при перемещении файлов между различными типами файловых систем. Подробности см. в вопросе #2317 на GitHub.
Это поддерживается только в Julia 1.6 и выше.
JULIA_PKG_OFFLINE
Если установлено в true, это включит автономный режим: см. Pkg.offline.
Автономный режим Pkg требует Julia 1.5 или более поздней версии.
JULIA_PKG_PRECOMPILE_AUTO
Если установлено в 0, это отключит автоматическую предварительную компиляцию действиями пакета, которые изменяют манифест. См. Pkg.precompile.
JULIA_PKG_SERVER
Указывает URL реестра пакетов, который следует использовать. По умолчанию, Pkg использует https://pkg.julialang.org для получения пакетов Julia. Кроме того, вы можете отключить использование протокола PkgServer и вместо этого получить доступ к пакетам напрямую с их хостов (GitHub, GitLab и т. д.) путём установки: export JULIA_PKG_SERVER=""
JULIA_PKG_SERVER_REGISTRY_PREFERENCE
Указывает предпочтительный тип реестра. В настоящее время поддерживаются значения conservative (по умолчанию), которые будут публиковать только ресурсы, обработанные сервером хранения (и, следовательно, с большей вероятностью будут доступны на PkgServers), тогда как eager будет публиковать реестры, ресурсы которых необязательно были обработаны серверами хранения. Пользователям за ограниченными брандмауэрами, которые не позволяют загружать файлы с произвольных серверов, не следует использовать вариант eager.
Это влияет только на Julia 1.7 и выше.
JULIA_PKG_UNPACK_REGISTRY
Если установлено значение true, это распакует реестр вместо сохранения его в виде сжатого архива tarball.
Это влияет только на Julia 1.7 и выше. Более ранние версии всегда распакуют реестр.
JULIA_PKG_USE_CLI_GIT
Если установлено значение true, операции Pkg, использующие протокол git, будут использовать внешнюю утилиту git вместо стандартной библиотеки libgit2.
Использование утилиты git поддерживается только в Julia 1.7 и выше.
JULIA_PKGRESOLVE_ACCURACY
Точность решателя пакетов. Должно быть положительным целым числом, по умолчанию 1.
Транспорт сети
JULIA_NO_VERIFY_HOSTS / JULIA_SSL_NO_VERIFY_HOSTS / JULIA_SSH_NO_VERIFY_HOSTS / JULIA_ALWAYS_VERIFY_HOSTS
Указывает хосты, идентификаторы которых должны или не должны проверяться для определённых слоёв транспорта. См. NetworkOptions.verify_host
JULIA_SSL_CA_ROOTS_PATH
Указывает файл или директорию, содержащие корневые сертификаты центров сертификации. См. NetworkOptions.ca_roots
Внешние приложения
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 в противном случае.
Для использования Visual Studio Code в Windows, установите $JULIA_EDITOR на code.cmd.
Параллелизация
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 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_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–2022 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.8/manual/environment-variables/