Environment Variables
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/config/startup.jl内での変更です。
一つの理由は、JULIA_NUM_THREADSやJULIA_PROJECTのような一部のJulia言語の変数は、Juliaが起動する前に設定する必要があるためです。
同様に、sysimage内のユーザーモジュールの__init__()関数はstartup.jlの前に実行されるため、startup.jlで環境変数を設定するのはユーザーコードにとっては遅すぎるかもしれません。
さらに、実行時に環境変数を変更すると、無害なコードにデータ競合が発生する可能性があります。
Bashでは、環境変数は手動で設定することができます。例えば、export JULIA_NUM_THREADS=4を実行してからJuliaを起動するか、同じコマンドを~/.bashrcまたは~/.bash_profileに追加して、Bashが起動するたびに変数を設定することができます。
File locations
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/baseJuliaが最初にソースファイルを検索するディレクトリを決定します(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()を介して)。
例えば、/bin/juliaにあるJulia実行可能ファイルを持ち、DATAROOTDIRが../share、SYSCONFDIRが../etcのLinuxインストールでは、JULIA_BINDIRが/binに設定され、ソースファイルの検索パスは
/share/julia/baseおよびグローバル設定検索パスの
/etc/julia/startup.jlJULIA_PROJECT
初期アクティブプロジェクトを示すディレクトリパス。この環境変数を設定することは、--project スタートアップオプションを指定するのと同じ効果がありますが、--project の方が優先されます。変数が @. に設定されている場合(末尾のドットに注意)、Julia は現在のディレクトリとその親ディレクトリから Project.toml または JuliaProject.toml ファイルを含むプロジェクトディレクトリを探そうとします。詳細は Code Loading の章も参照してください。
JULIA_PROJECT は、juliaを開始する前に定義する必要があります。startup.jl で定義するのは、起動プロセスの中では遅すぎます。
JULIA_LOAD_PATH
JULIA_LOAD_PATH 環境変数は、グローバルな Julia LOAD_PATH 変数を設定するために使用され、どのパッケージが import および using を介してロードできるかを決定します(Code Loading を参照)。
JULIA_LOAD_PATHに空のエントリがある場合、LOAD_PATHを設定する際に、空のエントリはデフォルト値LOAD_PATHの["@", "@v#.#", "@stdlib"]に展開されます。これにより、4d61726b646f776e2e436f64652822222c20224a554c49415f4c4f41445f504154482229_40726566204a554c49415f4c4f41445f50415448がすでに設定されているかどうかに関係なく、シェルスクリプトでロードパスの値を簡単に追加、前置きなどができます。たとえば、ディレクトリ/foo/barをLOAD_PATHの前に追加するには、次のようにします。
export JULIA_LOAD_PATH="/foo/bar:$JULIA_LOAD_PATH"もし JULIA_LOAD_PATH 環境変数がすでに設定されている場合、その古い値は /foo/bar で前置きされます。一方、4d61726b646f776e2e436f64652822222c20224a554c49415f4c4f41445f504154482229_40726566204a554c49415f4c4f41445f50415448 が設定されていない場合、/foo/bar: に設定され、これは LOAD_PATH の値 ["/foo/bar", "@", "@v#.#", "@stdlib"] に展開されます。もし 4d61726b646f776e2e436f64652822222c20224a554c49415f4c4f41445f504154482229_40726566204a554c49415f4c4f41445f50415448 が空文字列に設定されている場合、空の LOAD_PATH 配列に展開されます。言い換えれば、空文字列はゼロ要素の配列として解釈され、一要素の空文字列の配列としては解釈されません。この動作は、環境変数を介して空のロードパスを設定できるようにするために選ばれました。デフォルトのロードパスを希望する場合は、環境変数を未設定にするか、値を持たなければならない場合は、文字列 : に設定してください。
JULIA_DEPOT_PATH
JULIA_DEPOT_PATH 環境変数は、グローバルな Julia DEPOT_PATH 変数を設定するために使用され、これはパッケージマネージャーや Julia のコード読み込みメカニズムがパッケージレジストリ、インストールされたパッケージ、名前付き環境、リポジトリのクローン、キャッシュされたコンパイル済みパッケージイメージ、設定ファイル、および REPL の履歴ファイルのデフォルトの場所を探す場所を制御します。
Unlike the shell PATH variable but similar to JULIA_LOAD_PATH, empty entries in JULIA_DEPOT_PATH have special behavior:
- 最後に、ユーザーデポを除外して、
DEPOT_PATHのデフォルト値に拡張されます。 - 最初は、ユーザーデポを含む
DEPOT_PATHのデフォルト値に展開されます。
これにより、ユーザーデポの簡単なオーバーライドが可能になり、キャッシュファイルやアーティファクトなど、Juliaにバンドルされているリソースへのアクセスを維持できます。たとえば、ユーザーデポを/foo/barに切り替えるには、末尾に:を付けます。
export JULIA_DEPOT_PATH="/foo/bar:"すべてのパッケージ操作、例えばレジストリのクローンやパッケージのインストールは、現在 /foo/bar に書き込まれますが、空のエントリはデフォルトのシステムデポに展開されるため、バンドルされたリソースは引き続き利用可能です。もし本当に /foo/bar のデポのみを使用し、バンドルされたリソースを読み込まないようにしたい場合は、環境変数をトレーリングコロンなしで /foo/bar に設定してください。
フルデフォルトリストの最後にデポを追加するには、デフォルトユーザーデポを含めて、先頭に : を付けてください。
export JULIA_DEPOT_PATH=":/foo/bar"上記のルールには2つの例外があります。まず、JULIA_DEPOT_PATHが空の文字列に設定されている場合、空のDEPOT_PATH配列に展開されます。言い換えれば、空の文字列はゼロ要素の配列として解釈され、空の文字列の1要素の配列としては解釈されません。この動作は、環境変数を介して空のデポパスを設定できるようにするために選択されました。
第二に、JULIA_DEPOT_PATHにユーザーデポが指定されていない場合、空のエントリはデフォルトのデポにユーザーデポを含めて展開されます。これにより、環境変数が未設定のようにデフォルトのデポを使用することができ、文字列 : に設定することができます。
JULIA_DEPOT_PATH は、juliaを開始する前に定義する必要があります。startup.jl で定義するのは、起動プロセスの時点では遅すぎます。その時点では、環境変数からポピュレートされる DEPOT_PATH 配列を直接変更することができます。
JULIA_HISTORY
REPLの履歴ファイルの絶対パス REPL.find_hist_file()。$JULIA_HISTORY が設定されていない場合、REPL.find_hist_file() はデフォルトで
$(DEPOT_PATH[1])/logs/repl_history.jlJULIA_MAX_NUM_PRECOMPILE_FILES
単一のパッケージの異なるインスタンスをプリコンパイルキャッシュに保存する最大数を設定します(デフォルト = 10)。
JULIA_VERBOSE_LINKING
プリコンパイル中にリンカコマンドが表示されるように設定されている場合は、trueに設定します。
Pkg.jl
JULIA_CI
true に設定されている場合、これはパッケージサーバーに対して、すべてのパッケージ操作がパッケージ使用統計を収集する目的で継続的インテグレーション (CI) システムの一部であることを示します。
JULIA_NUM_PRECOMPILE_TASKS
パッケージを事前コンパイルする際に使用する並列タスクの数。Pkg.precompile。
JULIA_PKG_DEVDIR
Pkg.developによってパッケージをダウンロードするために使用されるデフォルトディレクトリ。
JULIA_PKG_IGNORE_HASHES
1に設定すると、アーティファクト内の不正なハッシュを無視します。これは、ダウンロードの検証を無効にするため、慎重に使用する必要がありますが、異なる種類のファイルシステム間でファイルを移動する際の問題を解決することができます。詳細については、Pkg.jl issue #2317を参照してください。
JULIA_PKG_OFFLINE
true に設定すると、オフラインモードが有効になります: Pkg.offline。
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_PKG_UNPACK_REGISTRY
true に設定すると、レジストリを圧縮された tarball として保存するのではなく、展開します。
JULIA_PKG_USE_CLI_GIT
true に設定されている場合、git プロトコルを使用する Pkg 操作は、デフォルトの libgit2 ライブラリの代わりに外部の git 実行可能ファイルを使用します。
JULIA_PKGRESOLVE_ACCURACY
パッケージリゾルバーの精度。これは正の整数である必要があり、デフォルトは 1 です。
JULIA_PKG_PRESERVE_TIERED_INSTALLED
デフォルトのパッケージインストール戦略を Pkg.PRESERVE_TIERED_INSTALLED に変更して、パッケージマネージャーができるだけ多くの既にインストールされているパッケージのバージョンを保持しながら、パッケージのバージョンをインストールしようとするようにします。
JULIA_PKG_GC_AUTO
falseに設定すると、パッケージとアーティファクトの自動ガベージコレクションが無効になります。詳細については、Pkg.gcを参照してください。
Network transport
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
証明書機関のルートを含むファイルまたはディレクトリを指定してください。See NetworkOptions.ca_roots
External applications
JULIA_SHELL
Juliaが外部コマンドを実行するために使用するシェルの絶対パス(Base.repl_cmd()を介して)。デフォルトは環境変数$SHELLで、$SHELLが設定されていない場合は/bin/shにフォールバックします。
JULIA_EDITOR
InteractiveUtils.editor()によって返され、例えばInteractiveUtils.editで使用される、好みのエディタのコマンドを指します。例えばvimのように。
$JULIA_EDITOR は $VISUAL よりも優先され、さらに $EDITOR よりも優先されます。これらの環境変数がいずれも設定されていない場合、エディタは Windows および OS X では open と見なされ、存在する場合は /etc/alternatives/editor、それ以外の場合は emacs となります。
WindowsでVisual Studio Codeを使用するには、$JULIA_EDITORをcode.cmdに設定します。
Parallelization
JULIA_CPU_THREADS
グローバル変数 Base.Sys.CPU_THREADS をオーバーライドし、利用可能な論理CPUコアの数を設定します。
JULIA_WORKER_TIMEOUT
Float64 は、Distributed.worker_timeout() の値を設定します(デフォルト: 60.0)。この関数は、ワーカープロセスがマスタープロセスとの接続を確立するまで待機する秒数を示します。
JULIA_NUM_THREADS
符号なし64ビット整数(uint64_t)または文字列で、Juliaで利用可能な最大スレッド数を設定します。$JULIA_NUM_THREADSが設定されていないか、非正の整数である場合、またはシステムコールを通じてCPUスレッドの数を特定できない場合、スレッド数は1に設定されます。
$JULIA_NUM_THREADSがautoに設定されている場合、スレッドの数はCPUスレッドの数に設定されます。また、:defaultと:interactiveのサイズを指定するために、カンマ区切りの文字列に設定することもできます。threadpoolsそれぞれ:
# 5 threads in the :default pool and 2 in the :interactive pool
export JULIA_NUM_THREADS=5,2
# `auto` threads in the :default pool and 1 in the :interactive pool
export JULIA_NUM_THREADS=auto,1JULIA_THREAD_SLEEP_THRESHOLD
文字列が大文字小文字を区別せずに部分文字列 "infinite" で始まる場合、スピニングスレッドは決してスリープしません。それ以外の場合、$JULIA_THREAD_SLEEP_THRESHOLD は符号なし 64 ビット整数(uint64_t)として解釈され、スピニングスレッドがスリープすべき時間をナノ秒単位で示します。
JULIA_NUM_GC_THREADS
ガーベジコレクションで使用されるスレッドの数を設定します。指定されていない場合は、ワーカースレッドの数に設定されます。
JULIA_IMAGE_THREADS
このJuliaプロセスでの画像コンパイルに使用されるスレッド数を設定する符号なし32ビット整数です。この変数の値は、モジュールが小さなモジュールである場合は無視されることがあります。指定しない場合、JULIA_CPU_THREADSの値または論理CPUコアの数の半分の小さい方が代わりに使用されます。
JULIA_IMAGE_TIMINGS
画像コンパイル中に詳細なタイミング情報が印刷されるかどうかを決定するブール値。デフォルトは0です。
JULIA_EXCLUSIVE
もし 0 以外の値に設定されている場合、Julia のスレッドポリシーは専用マシンでの実行と一致します:デフォルトのスレッドプール内の各スレッドはアフィニティが設定されています。 Interactive threads はオペレーティングシステムのスケジューラの制御下にあります。
それ以外の場合、Juliaはオペレーティングシステムにスレッドポリシーを処理させます。
Garbage Collection
JULIA_HEAP_SIZE_HINT
--heap-size-hint=<size>[<unit>] コマンドラインオプションに相当する環境変数。
メモリ使用量が指定された値を超えた場合にガーベジコレクションを強制します。値はバイト数として指定でき、オプションで以下の単位で指定できます:
- B (bytes)
- K (kibibytes)
- M (mebibytes)
- G (gibibytes)
- T (tebibytes)
- % (percentage of physical memory)例えば、JULIA_HEAP_SIZE_HINT=1Gはガーベジコレクタに1 GBのヒープサイズのヒントを提供します。
REPL formatting
環境変数は、REPLの出力がターミナルでどのようにフォーマットされるかを決定します。JULIA_*_COLOR変数はANSI terminal escape sequencesに設定する必要があります。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()(デフォルト:normal, "\033[0m")は、ターミナルで入力が持つべきフォーマットです。
JULIA_ANSWER_COLOR
Base.answer_color()(デフォルト:normal、"\033[0m")は、ターミナルで出力されるべきフォーマットです。
NO_COLOR
When this variable is present and not an empty string (regardless of its value) then colored text will be disabled on the REPL. Can be overridden with the flag --color=yes or with the environment variable FORCE_COLOR. This environment variable is commonly recognized by command-line applications.
FORCE_COLOR
この変数が存在し、空の文字列でない場合(その値に関係なく)、REPLでカラー付きテキストが有効になります。フラグ --color=no で上書きすることができます。この環境変数は commonly recognized by command-line applications です。
System and Package Image Building
JULIA_CPU_TARGET
ターゲットマシンアーキテクチャを変更して、system と package images を(事前)コンパイルします。JULIA_CPU_TARGET は、ディスクキャッシュに出力される機械コードイメージ生成にのみ影響します。--cpu-target または -C とは異なり、command line option は、Julia セッション内でのジャストインタイム(JIT)コード生成には影響を与えず、機械コードはメモリにのみ保存されます。
JULIA_CPU_TARGET の有効な値は、julia -C help を実行することで取得できます。
JULIA_CPU_TARGETの設定は、異種計算システムにおいて重要です。ここでは、異なるタイプや機能を持つプロセッサが存在する可能性があります。これは、コンポーネントノードが異なるプロセッサを使用しているため、高性能コンピューティング(HPC)クラスターで一般的に見られます。
CPUターゲット文字列は、;で区切られた文字列のリストであり、各文字列はCPUまたはアーキテクチャ名で始まり、オプションの機能リストが,で区切られて続きます。genericまたは空のCPU名は、ターゲットISAの基本的な必要機能セットを意味し、これは少なくともC/C++ランタイムがコンパイルされているアーキテクチャです。各文字列はLLVMによって解釈されます。
いくつかの特別な機能がサポートされています:
clone_allこれにより、ターゲットはsysimg内のすべての関数をクローンする必要があります。負の形(つまり
-clone_all)で使用されると、特定のターゲットに対してデフォルトで有効になっているフルクローンが無効になります。base([0-9]*)これは(0ベースの)ベースターゲットインデックスを指定します。ベースターゲットは、現在のターゲットが基づいているターゲットであり、すなわち、クローンされない関数はベースターゲットのバージョンを使用します。このオプションは、ベースターゲットがデフォルトターゲット(0)でない場合、ベースターゲットを完全にクローンする原因となります(それに対して
clone_allが指定されているかのように)。インデックスは現在のインデックスよりも小さい場合のみ可能です。opt_sizeサイズを最適化し、パフォーマンスへの影響を最小限に抑えます。Clang/GCCの
-Os。min_sizeサイズの最適化のみ。Clangの
-Oz。
Debugging and profiling
JULIA_DEBUG
ファイルまたはモジュールのデバッグログを有効にするには、Loggingを参照してください。
JULIA_PROFILE_PEEK_HEAP_SNAPSHOT
実行中にプロファイリングピークメカニズムを介してヒープスナップショットの収集を有効にします。Triggered During Executionを参照してください。
JULIA_TIMING_SUBSYSTEMS
特定のJulia実行のためにゾーンを有効または無効にすることができます。たとえば、変数を +GC,-INFERENCE に設定すると、GC ゾーンが有効になり、INFERENCE ゾーンが無効になります。Dynamically Enabling and Disabling Zones を参照してください。
JULIA_GC_NO_GENERATIONAL
0以外の値に設定されている場合、Juliaのガベージコレクタはメモリの「クイックスイープ」を決して実行しません。
JULIA_GC_WAIT_FOR_DEBUGGER
0以外の値に設定されている場合、Juliaのガベージコレクタは、重大なエラーが発生したときに中止するのではなく、デバッガが接続するのを待ちます。
ENABLE_JITPROFILING
0以外の値に設定すると、コンパイラはジャストインタイム(JIT)プロファイリングのためのイベントリスナーを作成して登録します。
この環境変数は、JuliaがJITプロファイリングサポートでコンパイルされた場合にのみ効果があります。
- Intelの VTune™ Amplifier (ビルド構成で
USE_INTEL_JITEVENTSが1に設定されている場合)、または - OProfile (
USE_OPROFILE_JITEVENTSをビルド構成で1に設定)。 - Perf (
USE_PERF_JITEVENTSがビルド構成で1に設定されています)。この統合はデフォルトで有効になっています。
ENABLE_GDBLISTENER
0以外の値に設定すると、リリースビルドでのJuliaコードのGDB登録が有効になります。Juliaのデバッグビルドでは、これは常に有効です。-g 2と一緒に使用することをお勧めします。
JULIA_LLVM_ARGS
LLVMバックエンドに渡される引数。
JULIA_FALLBACK_REPL
REPL.jlの代わりにフォールバックREPLを強制します。