環境変数
Julia の設定は様々な環境変数を通して変更できます。環境変数の設定は OS ごとの通常の方法もしくは Julia が提供するポータブルな方法を使って行います。例えば環境変数 JULIA_EDITOR
を vim
にしたいなら、ENV["JULIA_EDITOR"] = "vim"
を (REPL などで) 実行すれば現在実行中のセッションで、ユーザーのホームディレクトリの ~/.julia/config/startup.jl
に同じ内容を書き込めば以降の全てのセッションで設定を変更できます。この環境変数の現在の値は ENV["JULIA_EDITOR"]
を評価すると得られます。
通常 Julia が利用する環境変数には名前の先頭に JULIA
が付いています。verbose=true
として InteractiveUtils.versioninfo
を呼び出すと、定義されている環境変数で Julia に関係するものが全て出力されます (名前に JULIA
が付くものを含む)。
JULIA_NUM_THREADS
や JULIA_PROJECT
といった一部の環境変数は Julia が開始する前に設定する必要があるので、これらの変数を ~/.julia/config/startup.jl
で設定しても反映されません。Bash で環境変数を設定するには Julia を開始する前に export JULIA_NUM_THREADS=4
を実行するか、~/.bashrc
または ~/.bash_profile
に同じコマンドを書き込んで Bash が開始されるたびに実行されるようにします。
ファイルの格納場所に関する環境変数
JULIA_BINDIR
Julia 実行形式を含むディレクトリの完全パスを表します。Julia のグローバル変数 Sys.BINDIR
はこの値で初期化されます。$JULIA_BINDIR
が設定されていなければ、Julia が実行時に調べて設定します。
デフォルトの実行形式は次のいずれかです:
$JULIA_BINDIR/julia
$JULIA_BINDIR/julia-debug
グローバル変数 Base.DATAROOTDIR
は Sys.BINDIR
から Julia に関連するデータを収めたディレクトリまでの相対パスを保持します。このため Julia が (Base.find_source_file()
で) ソースファイルを探索するときは
$JULIA_BINDIR/$DATAROOTDIR/julia/base
というパスから探索が始まります。
同様に、グローバル変数 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
だとします。このとき、ソースファイルの探索パスは
/share/julia/base
となり、グローバル設定の探索パスは
/etc/julia/startup.jl
となります。
JULIA_PROJECT
Julia の開始時にアクティブになるプロジェクトのディレクトリパスです。この環境変数を設定するのはコマンドライン引数の --project
を使って Julia を起動するのと同じですが、両方指定されると --project
が優先されます。この環境変数が @.
に設定されると、Julia は Project.toml
または JuliaProject.toml
を含むプロジェクトディレクトリを現在のディレクトリから上に向かいながら探索します。コードの読み込みの章も参照してください。
JULIA_PROJECT
は Julia の起動前に設定が必要です: startup.jl
で JULIA_PROJECT
を設定してもスタートアップ処理に間に合いません。
JULIA_LOAD_PATH
環境変数 JULIA_LOAD_PATH
は Julia のグローバル変数 LOAD_PATH
の初期化で利用されます。LOAD_PATH
は import
と using
でインポートできるパッケージがどれかを指定するグローバル変数です (参照: コードの読み込み)。
シェルの変数 PATH
とは異なり、JULIA_LOAD_PATH
に含まれる空のエントリーは ["@", "@v#.#", "@stdlib"]
というデフォルトの LOAD_PATH
に展開されます。こうなっているのは、シェルスクリプトなどを使った JULIA_PATH
の変更を JULIA_LOAD_PATH
の値や定義の有無を気にせずに行うためです。例えばディレクトリ /foo/bar
を LOAT_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
へ展開されます。言い換えると、空の文字列はゼロ要素の配列と解釈され、空文字列からなる一要素の配列とは解釈されません。この振る舞いをする理由は環境変数を使って空の LOAD_PATH
を設定できるようにするためです。もしデフォルトの LOAD_PATH
が必要なら、環境変数を定義しないでおくか、もし定義が必要なら文字列 :
としてください。
JULIA_DEPOT_PATH
環境変数 JULIA_DEPOT_PATH
は Julia のグローバル変数 DEPOT_PATH
の初期化に使われます。DEPOT_PATH
はパッケージマネージャと Julia のコード読み込み機構が次の情報を探索するパスを定めます:
- パッケージレジストリ
- インストールされたパッケージ
- 名前付き環境
- レポジトリのクローン
- キャッシュされたコンパイル済みパッケージイメージ
- 設定ファイル
JULIA_LOAD_PATH
と同様に (そして PATH
とは異なり)、JULIA_DEPOT_PATH
の空のエントリーは DEPOT_PATH
デフォルトの値に展開されます。これによりシェルスクリプトを使った DEPOT_PATH
の設定が JULIA_DEPOT_PATH
の値や定義の有無に関わらず簡単に行えます。例えば DEPOT_PATH
に /foo/bar
を追加するには、次のコマンドだけで済みます:
export JULIA_DEPOT_PATH="/foo/bar:$JULIA_DEPOT_PATH"
もし環境変数 JULIA_DEPOT_PATH
が既に定義されていれば、古い値が /foo/bar
の後に続きます。一方で定義されていなければ JULIA_DEPOT_PATH
は /foo/bar:
と定義され、これはデフォルトの DEPOT_PATH
の先頭に /foo/bar
を付けるのと同じ効果を持ちます。
JULIA_DEPOT_PATH
が空文字列だと、空の DEPOT_PATH
に展開されます。言い換えると、空文字列はゼロ要素の配列と解釈され、空文字列からなる一要素の配列とは解釈されません。この振る舞いをする理由は環境変数を使って空の DEPOT_PATH
を設定できるようにするためです。もしデフォルトの DEPOT_PATH
が必要なら、環境変数を定義しないでおくか、もし定義が必要なら文字列 :
としてください。
JULIA_HISTORY
REPL の履歴ファイルの完全パス (REPL.find_hist_file()
の返す値) です。$JULIA_HISTORY
が設定されていないと、REPL.find_hist_file()
は次のデフォルト値に設定されます:
$(DEPOT_PATH[1])/logs/repl_history.jl
外部アプリケーションに関する環境変数
JULIA_SHELL
Julia が外部コマンドを (Base.repl_cmd()
で) 実行するときに使うシェルの完全パスです。デフォルトは環境変数 $SHELL
であり、これが定義されていなければ /bin/sh
にフォールバックします。
Windows ではこの環境変数は無視され、外部コマンドは直接実行されます。
JULIA_EDITOR
InteractiveUtils.editor()
が返すエディタです。この値が InteractiveUtils.edit
などの関数で使われます。vim
などのエディタを起動するコマンドに設定します。
$JULIA_EDITOR
は $VISUAL
より優先され、$VISUAL
は $EDITOR
より優先されます。これら三つの環境変数がいずれも定義されていなければ、Windows と OS X では open
, それ以外では /etc/alternatives/editor
が存在するなら /etc/alternatives/editor
, 存在しなければ emacs
が使われます。
並列性に関する環境変数
JULIA_CPU_THREADS
環境変数 JULIA_CPU_THREADS
の値はグローバル変数 Base.Sys.CPU_THREADS
を上書きします。利用可能な論理 CPU コアを表します。
JULIA_WORKER_TIMEOUT
Distributed.worker_timeout()
関数の返り値を設定します。JULIA_WORKER_TIMEOUT
の値は Float64
を表す文字列である必要があり、デフォルトは 60.0
です。この関数の返り値はワーカープロセスが接続を確立するときにマスタープロセスを待機する秒数であり、接続を確立できずにこの秒数が経過するとワーカーは停止します。
JULIA_NUM_THREADS
Julia が利用できるスレッド数の最大値を設定する符号無し 64 ビット整数 (uint64_t
) を表す文字列です。$JULIA_NUM_THREADS
が物理 CPU コア数より大きいと、スレッド数は物理 CPU コア数に設定されます。$JULIA_NUM_THREADS
が正でない場合および設定されていない場合、あるいは CPU コア数をシステムコールで取得できなかった場合には、スレッド数は 1
に設定されます。
JULIA_NUM_THREADS
は Julia を開始する前に設定する必要があります。JULIA_NUM_THREADS
を startup.jl
で設定してもスタートアップ処理に間に合いません。
Julia 1.5 以降では起動時にコマンドライン引数 -t
/--threads
を使ってスレッド数を設定することもできます。
JULIA_THREAD_SLEEP_THRESHOLD
この値が文字列 "infinite"
(全て小文字) で始まるなら、spinning を行うスレッドが眠らなくなります。そうでなければ $JULIA_THREAD_SLEEP_THRESHOLD
は符号無し 64 ビット整数 (uint64_t
) として解釈され、spinning を行うスレッドが眠る時間を表します1 (単位はナノ秒)。
JULIA_EXCLUSIVE
0
でない値が設定されると、Julia が専用のマシンで実行されるようなスレッドポリシーが設定されます: マスタースレッドは proc 0 で実行され、全てのスレッドが affinitize されます2。
REPL のフォーマットに関する環境変数
以下に示すのは REPL の出力を端末に表示するときのフォーマットを定める環境変数です。一般にこれらの変数は ANSI エスケープシーケンスに設定されるべきです。Julia はこういった設定を変更する高水準インターフェースも提供しています: 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_STACKFRAME_LINEINFO_COLOR
Base.stackframe_lineinfo_color()
の返り値です。端末に表示されるスタックトレース中の行番号情報のフォーマットを表します。太字 ("\033[1m"
) がデフォルトです。
JULIA_STACKFRAME_FUNCTION_COLOR
Base.stackframe_function_color()
の返り値です。端末に表示されるスタックトレース中の関数呼び出しのフォーマットを表します。太字 ("\033[1m"
) がデフォルトです。
デバッグとプロファイルに関する環境変数
JULIA_DEBUG
ファイルあるいはモジュールのデバッグログを有効にします。詳細は標準ライブラリの Logging
モジュールを参照してください。
JULIA_GC_ALLOC_POOL
, JULIA_GC_ALLOC_OTHER
, JULIA_GC_ALLOC_PRINT
これらの環境変数が設定されるなら、その値はコロンで区切られた三つの符号付き 64 ビット整数 (int64_t
)、またはその先頭に 'r'
を付けたものである必要があります。a:b:c
という形の三つの整数は a
, a + b
, a + 2*b
, ..., c
という算術級数を表します。
$JULIA_GC_ALLOC_POOL
が表す算術級数に属するn
に対して、n
回目のjl_gc_pool_alloc()
の呼び出しではガベージコレクションが強制されます。$JULIA_GC_ALLOC_OTHER
が表す算術級数に属するn
に対して、n
回目のmaybe_collect()
の呼び出しではガベージコレクションが強制されます。$JULIA_GC_ALLOC_PRINT
が表す算術級数に属するn
に対して、n
回目のjl_gc_collect()
の呼び出しではjl_gc_pool_alloc()
とmaybe_collect()
の呼び出し回数が出力されます。
これらの環境変数の値が 'r'
で始まるなら、対応するガベージコレクションイベントに反応する間隔がランダム化されます3。
これらの環境変数はガベージコレクションのデバッグ機能を有効にして Julia がコンパイルされたときにだけ効果を持ちます。つまりビルド設定の WITH_GC_DEBUG_ENV
が 1
でなければ使えません。
JULIA_GC_NO_GENERATIONAL
0
でない値に設定すると、Julia のガベージコレクタがメモリの「クイックスイープ (quick sweep)」を行わなくなります。
この環境変数はガベージコレクションのデバッグ機能を有効にして 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) プロファイリング用のイベントリスナーを作成・登録します。
この環境変数は JIT プロファイリングのサポートを有効にして Julia がコンパイルされたときにだけ効果を持ちます。つまり、次のいずれかが必要です:
- Intel の VTune™ Amplifier (ビルド設定で
USE_INTEL_JITEVENTS
を1
にする) -
OProfile (ビルド設定で
USE_OPROFILE_JITEVENTS
を1
にする)
JULIA_LLVM_ARGS
LLVM バックエンドに渡される引数です。