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/baseソースファイルを最初に検索するディレクトリを決定します(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 実行可能ファイル、../share の DATAROOTDIR、および ../etc の SYSCONFDIR を持つ 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 を参照)。
シェルの PATH 変数とは異なり、JULIA_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 の履歴ファイルのデフォルトの場所を探す場所を制御します。
シェルの PATH 変数とは異なり、しかし JULIA_LOAD_PATH に似て、JULIA_DEPOT_PATH の空のエントリには特別な動作があります:
- 最後に、ユーザーデポを除外して、
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はJuliaパッケージを取得するためにhttps://pkg.julialang.orgを使用します。さらに、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 に変更して、パッケージマネージャーができるだけ多くの既にインストールされているパッケージのバージョンを保持しながら、パッケージのバージョンをインストールしようとするようにします。
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
証明書認証局のルートを含むファイルまたはディレクトリを指定してください。次を参照してください 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スレッドの数に設定されます。
JULIA_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 のスレッドポリシーは専用マシンでの実行と一致します:マスタースレッドはプロセッサ 0 にあり、スレッドはアフィニティが設定されています。それ以外の場合、Julia はオペレーティングシステムにスレッドポリシーの管理を任せます。
REPL formatting
REPLの出力がターミナルでどのようにフォーマットされるかを決定する環境変数。一般的に、これらの変数は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()(デフォルト:通常、"\033[0m")は、ターミナルで出力されるべきフォーマットです。
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名は、C/C++ランタイムがコンパイルされているアーキテクチャを少なくとも含むターゲットISAの基本的な必須機能セットを意味します。各文字列はLLVMによって解釈されます。
いくつかの特別な機能がサポートされています:
clone_allこれは、ターゲットがsysimg内のすべての関数をクローンすることを強制します。負の形(つまり、
-clone_all)で使用されると、特定のターゲットに対してデフォルトで有効になっているフルクローンを無効にします。base([0-9]*)これは(0ベースの)ベースターゲットインデックスを指定します。ベースターゲットは、現在のターゲットが基づいているターゲットであり、すなわち、クローンされない関数はベースターゲットのバージョンを使用します。このオプションは、デフォルトターゲット(0)でない場合、ベースターゲットを完全にクローンする原因となります(それに対して
clone_allが指定されたかのように)。インデックスは現在のインデックスよりも小さい必要があります。opt_sizeサイズを最適化し、パフォーマンスへの影響を最小限に抑えます。Clang/GCCの
-Os。最小サイズサイズの最適化のみ。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_ALLOC_POOL
JULIA_GC_ALLOC_OTHER
JULIA_GC_ALLOC_PRINT
設定されている場合、これらの環境変数は、オプションで文字 'r' で始まる文字列を受け取り、その後にコロンで区切られた3つの符号付き64ビット整数(int64_t)の文字列補間が続きます。この整数の三つ組 a:b:c は、算術数列 a、a + b、a + 2*b、... c を表します。
jl_gc_pool_alloc()が呼び出されたのがn回目であり、nが$JULIA_GC_ALLOC_POOLで表される算術数列に属する場合、ガーベジコレクションが強制されます。maybe_collect()が呼ばれたのがn回目であり、nが$JULIA_GC_ALLOC_OTHERで表される算術数列に属する場合、ガーベジコレクションが強制されます。jl_gc_collect()が呼び出されたのがn回目であり、nが$JULIA_GC_ALLOC_PRINTで表される算術数列に属する場合、jl_gc_pool_alloc()およびmaybe_collect()への呼び出し回数が印刷されます。
環境変数の値が文字 'r' で始まる場合、ガーベジコレクションイベントの間隔はランダム化されます。
JULIA_GC_NO_GENERATIONAL
0以外の値に設定されている場合、Juliaのガベージコレクタはメモリの「クイックスイープ」を決して実行しません。
JULIA_GC_WAIT_FOR_DEBUGGER
もし 0 以外の値に設定されている場合、Julia のガベージコレクタは、重大なエラーが発生したときに中止するのではなく、デバッガが接続するのを待ちます。
ENABLE_JITPROFILING
0以外の値に設定されている場合、コンパイラはジャストインタイム(JIT)プロファイリングのためのイベントリスナーを作成し、登録します。
この環境変数は、JuliaがJITプロファイリングサポートでコンパイルされた場合にのみ効果があります。
- インテルの 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を強制します。