环境变量
Julia 使用的环境变量通常以 JULIA
开头。如果调用 时使用关键字参数 verbose = true
,那么输出结果将列出与 Julia 相关的已定义环境变量,即包括那些名称中包含 JULIA
的环境变量。
Note
某些变量需要在 Julia 启动之前设置,比如 JULIA_NUM_THREADS
和 JULIA_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 数据目录的相对路径。
$JULIA_BINDIR/$DATAROOTDIR/julia/base
上述路径是 Julia 最初搜索源文件的路径(通过 Base.find_source_file()
)。
同样,全局变量 Base.SYSCONFDIR
是一个到配置文件目录的相对路径。在默认情况下,Julia 会在下列文件中搜索 startup.jl
文件(通过 Base.load_julia_startup()
)
$JULIA_BINDIR/$SYSCONFDIR/julia/startup.jl
$JULIA_BINDIR/../etc/julia/startup.jl
例如,在 Linux 下安装的 Julia 可执行文件位于 /bin/julia
,DATAROOTDIR
为 ../share
,SYSCONFDIR
为 ../etc
,JULIA_BINDIR
会被设置为 /bin
,会有一个源文件搜索路径:
和一个全局配置文件搜索路径:
/etc/julia/startup.jl
JULIA_PROJECT
指示哪个项目应该是初始活动项目的目录路径。 设置这个环境变量和指定--project
启动选项效果一样,但是--project
优先级更高。 如果变量设置为 @.
,那么 Julia 会尝试从当前目录及其父目录中查找包含 Project.toml
或 JuliaProject.toml
文件的项目目录。 另请参阅有关 的章节。
Note
JULIA_PROJECT
必须在启动 julia 前定义;于 startup.jl
中定义它对于启动的过程为时已晚。
JULIA_LOAD_PATH
环境变量用于补充全局的 Julia 变量 LOAD_PATH ,该变量可用于确定通过 import
和 using
可以加载哪些包(请参阅 )。
与 shell 使用的 PATH
变量不同, 在 JULIA_LOAD_PATH
中的空条目将会在填充 LOAD_PATH
时被扩展为 LOAD_PATH
的默认值 ["@", "@v#.#", "@stdlib"]
。这样,无论 JULIA_LOAD_PATH
是否已被设置,均可以使用 shell 脚本轻松地在加载路径前面或后面添加值。例如要将 /foo/bar
添加到 LOAD_PATH
之前,只需要使用下列脚本:
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()
默认为
$(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 用来执行外部命令的 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_THREADS
的 auto
值需要 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 后端的参数。