环境变量

    Julia 使用的环境变量通常以 JULIA 开头。如果调用 时使用关键字参数 verbose = true,那么输出结果将列出与 Julia 相关的已定义环境变量,即包括那些名称中包含 JULIA 的环境变量。

    Note

    某些变量需要在 Julia 启动之前设置,比如 JULIA_NUM_THREADSJULIA_PROJECT,因为在启动过程中将这些变量添加到 ~/.julia/config/startup.jl 中为时已晚。在 Bash 中,环境变量可以手动设置,这可通过在 Julia 启动前运行诸如 export JULIA_NUM_THREADS=4 的命令,亦可通过向 ~/.bashrc~/.bash_profile 添加相同命令来在 Bash 每次启动时设置该变量。

    包含 Julia 可执行文件的目录的绝对路径,它会设置全局变量 Sys.BINDIR$JULIA_BINDIR 如果没有设置,那么 Julia 会在运行时确定 Sys.BINDIR 的值。

    在默认情况下,可执行文件是指:

    全局变量 Base.DATAROOTDIR 是一个从 Sys.BINDIR 到 Julia 数据目录的相对路径。

    1. $JULIA_BINDIR/$DATAROOTDIR/julia/base

    上述路径是 Julia 最初搜索源文件的路径(通过 Base.find_source_file())。

    同样,全局变量 Base.SYSCONFDIR 是一个到配置文件目录的相对路径。在默认情况下,Julia 会在下列文件中搜索 startup.jl 文件(通过 Base.load_julia_startup()

    1. $JULIA_BINDIR/$SYSCONFDIR/julia/startup.jl
    2. $JULIA_BINDIR/../etc/julia/startup.jl

    例如,在 Linux 下安装的 Julia 可执行文件位于 /bin/juliaDATAROOTDIR../shareSYSCONFDIR../etcJULIA_BINDIR 会被设置为 /bin,会有一个源文件搜索路径:

    和一个全局配置文件搜索路径:

    1. /etc/julia/startup.jl

    JULIA_PROJECT

    指示哪个项目应该是初始活动项目的目录路径。 设置这个环境变量和指定--project启动选项效果一样,但是--project优先级更高。 如果变量设置为 @.,那么 Julia 会尝试从当前目录及其父目录中查找包含 Project.tomlJuliaProject.toml 文件的项目目录。 另请参阅有关 的章节。

    Note

    JULIA_PROJECT 必须在启动 julia 前定义;于 startup.jl 中定义它对于启动的过程为时已晚。

    JULIA_LOAD_PATH 环境变量用于补充全局的 Julia 变量 LOAD_PATH ,该变量可用于确定通过 importusing 可以加载哪些包(请参阅 )。

    与 shell 使用的 PATH 变量不同, 在 JULIA_LOAD_PATH 中的空条目将会在填充 LOAD_PATH 时被扩展为 LOAD_PATH 的默认值 ["@", "@v#.#", "@stdlib"] 。这样,无论 JULIA_LOAD_PATH 是否已被设置,均可以使用 shell 脚本轻松地在加载路径前面或后面添加值。例如要将 /foo/bar 添加到 LOAD_PATH 之前,只需要使用下列脚本:

    1. export JULIA_LOAD_PATH="/foo/bar:$JULIA_LOAD_PATH"

    如果已经设置了 JULIA_LOAD_PATH 环境变量,那么 /foo/bar 将被添加在原有值之前。另一方面,如果 JULIA_LOAD_PATH 尚未设置,那么它会被设置为 /foo/bar: ,而这将使用 的值扩展为 ["/foo/bar", "@", "@v#.#", "@stdlib"] 。如果 JULIA_LOAD_PATH 被设置为空字符串,那么它将被扩展为一个空的 LOAD_PATH 数组。换句话说,这个空字符串数组将被认为是零元素的数组,而非是一个空字符串单元素的数组。使用这样的加载行为是为了可以通过环境变量设置空的加载路径。如果你需要使用默认的加载路径,请不要设置这一环境变量,如果它必须有值,那么可将其设置为字符串 :

    Note

    在 Windows 上,路径元素由 ; 字符分隔,就像 Windows 上的大多数路径列表一样。 将上一段中的 : 替换为 ;

    JULIA_DEPOT_PATH 环境变量用于填充全局的 Julia 变量 DEPOT_PATH ,该变量用于控制包管理器以及 Juila 代码加载机制在何处查找包注册表、已安装的包、命名环境、克隆的存储库、缓存的预编译包映像、配置文件和 REPL 历史记录文件的默认位置。

    与 shell 使用的 PATH 变量不同,但与 JULIA_LOAD_PATH 类似, 在 JULIA_DEPOT_PATH 中的空条目将会被扩展为 DEPOT_PATH 的默认值。这样,无论 JULIA_DEPOT_PATH 是否已被设置,均可以使用 shell 脚本轻松地在仓库路径前面或后面添加值。例如要将 /foo/bar 添加到 DEPOT_PATH 之前,只需要使用下列脚本:

    Note

    在 Windows 上,路径元素由 ; 字符分隔,就像 Windows 上的大多数路径列表一样。 将上一段中的 : 替换为 ;

    JULIA_HISTORY

    REPL 历史文件中 REPL.find_hist_file() 的绝对路径。如果没有设置 $JULIA_HISTORY,那么 REPL.find_hist_file() 默认为

    1. $(DEPOT_PATH[1])/logs/repl_history.jl

    JULIA_PKG_SERVER

    Pkg.jl 使用,用于下载软件包和更新注册表。默认情况下,Pkg 使用 https://pkg.julialang.org 来获取 Julia 包。你可以使用此环境变量来选择不同的服务器。 此外,你可以禁用 PkgServer 协议的使用,并通过设置直接从它们的主机(GitHub、GitLab 等)访问包:

    1. export JULIA_PKG_SERVER=""

    JULIA_SHELL

    Julia 用来执行外部命令的 shell 的绝对路径(通过 Base.repl_cmd())。默认为环境变量 $SHELL,如果 $SHELL 未设置,则为 /bin/sh

    Note

    在 Windows 上,此环境变量将被忽略,并且外部命令会直接被执行。

    JULIA_EDITOR

    InteractiveUtils.editor() 的返回值–编辑器,例如,,会启动偏好编辑器,比如 vim

    $JULIA_EDITOR 优先于 $VISUAL,而后者优先于 $EDITOR。如果这些环境变量都没有设置,那么在 Windows 和 OS X 上会设置为 open,或者 /etc/alternatives/editor(如果存在的话),否则为 emacs

    改写全局变量 Base.Sys.CPU_THREADS,逻辑 CPU 核心数。

    JULIA_WORKER_TIMEOUT

    一个 值,用来确定 Distributed.worker_timeout() 的值(默认:60.0)。此函数提供 worker 进程在死亡之前等待 master 进程建立连接的秒数。

    一个无符号 64 位整数 (uint64_t),用于设置 Julia 可用的最大线程数。 如果$JULIA_NUM_THREADS 不为正数或未设置,或者无法通过系统调用确定CPU 线程数,则将线程数设置为1

    如果$JULIA_NUM_THREADS 设置为auto,则线程数将设置为CPU线程数。

    Note

    JULIA_NUM_THREADS 必须在启动 julia 之前定义; 启动过程中在startup.jl 中定义它是不能奏效的。

    Julia 1.5

    在 Julia 1.5 和更高版本中,也可在启动时使用 /--threads 命令行参数指定线程数。

    Julia 1.7

    $JULIA_NUM_THREADSauto 值需要 Julia 1.7 或更高版本。

    如果被设置为字符串,并且以大小写敏感的子字符串 "infinite" 开头,那么自旋线程从不睡眠。否则,$JULIA_THREAD_SLEEP_THRESHOLD 被解释为一个无符号 64 位整数(uint64_t),并且提供以纳秒为单位的自旋线程睡眠的时间量。

    决定 REPL 应当如何格式化输出的环境变量。通常,这些变量应当被设置为 ANSI 终端转义序列。Julia 提供了具有相同功能的高级接口;请参阅 章节。

    Base.error_color()(默认值:亮红,"\033[91m"),errors 在终端中的格式。

    Base.warn_color()(默认值:黄,"\033[93m"),warnings 在终端中的格式。

    Base.info_color()(默认值:青,"\033[36m"),info 在终端中的格式。

    Base.input_color()(默认值:标准,"\033[0m"),在终端中,输入应有的格式。

    Base.answer_color()(默认值:标准,"\033[0m"),在终端中,输出应有的格式。

    为文件或模块启动调试日志记录,请参阅 日志 了解更多信息。

    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_alloc(),并且 n 属于 $JULIA_GC_ALLOC_PRINT 代表的算术序列,那么 调用 jl_gc_pool_alloc()maybe_collect() 的次数会 被打印。

    如果这些环境变量的值以字符 ‘r' 开头,那么垃圾回收事件间的间隔是随机的。

    Note

    这些环境变量生效要求 Julia 在编译时带有垃圾收集调试支持(也就是,在构建配置中将 WITH_GC_DEBUG_ENV 设置为 1)。

    JULIA_GC_NO_GENERATIONAL

    如果设置为 0 以外的任何值,那么 Julia 的垃圾收集器将从不执行「快速扫描」内存。

    Note

    此环境变量生效要求 Julia 在编译时带有垃圾收集调试支持(也就是,在构建配置中将 WITH_GC_DEBUG_ENV 设置为 1)。

    JULIA_GC_WAIT_FOR_DEBUGGER

    如果设置为 0 以外的任何值,Julia 的垃圾收集器每当出现严重错误时将等待调试器连接而不是中止。

    Note

    此环境变量生效要求 Julia 在编译时带有垃圾收集调试支持(也就是,在构建配置中将 WITH_GC_DEBUG_ENV 设置为 1)。

    ENABLE_JITPROFILING

    如果设置为 0 以外的任何值,那么编译器将为即时(JIT)性能分析创建并注册一个事件监听器。

    Note

    此环境变量仅在使用 JIT 性能分析支持编译 Julia 时有效,使用如下之一:

    • Intel’s (USE_INTEL_JITEVENTS 在配置中设置为1), 或
    • Perf (USE_PERF_JITEVENTS 在构建配置中设置为 1)。 默认情况下启用此集成。

    ENABLE_GDBLISTENER

    传递给 LLVM 后端的参数。