Ruby 4.1 リファレンスマニュアル

環境変数

[edit]

Rubyインタプリタは以下の環境変数を参照します。

RUBYOPT

Rubyインタプリタにデフォルトで渡すオプションを指定します。

指定できないオプションを指定した場合、例外が発生します。

$ RUBYOPT=-y ruby -e ""
ruby: invalid switch in RUBYOPT: -y (RuntimeError)

sh系

      RUBYOPT='-Ke -rkconv'
      export RUBYOPT

csh系

      setenv RUBYOPT '-Ke -rkconv'

MS-DOS系

      set RUBYOPT=-Ke -rkconv
RUBYPATH

-S オプション指定時に、環境変数 PATH による Ruby スクリプトの探索に加えて、この環境変数で指定したディレクトリも探索対象になります(PATH の値よりも優先します)。起動オプションの詳細に関してはRubyの起動 を参照してください。

sh系

      RUBYPATH=$HOME/ruby:/opt/ruby
      export RUBYPATH

csh系

      setenv RUBYPATH $HOME/ruby:/opt/ruby

MS-DOS系

      set RUBYPATH=%HOMEDRIVE%%HOMEPATH%\ruby;\opt\ruby
RUBYLIB

Rubyライブラリの探索パス$:のデフォルト値の前にこの環境変数の値を付け足します。

sh系

      RUBYLIB=$HOME/ruby/lib:/opt/ruby/lib
      export RUBYLIB

csh系

      setenv RUBYLIB $HOME/ruby/lib:/opt/ruby/lib

MS-DOS系

      set RUBYLIB=%HOMEDRIVE%%HOMEPATH%\ruby\lib;\opt\ruby\lib
RUBYSHELL

この環境変数は mswin32版、mingw32版のrubyでのみ有効です。

Kernel?.system でコマンドを実行するときに使用するシェルを指定します。この環境変数が省略されていればCOMSPECの値を使用します。

PATH

Kernel?.systemなどでコマンドを実行するときに検索するパスです。設定されていないとき(nilのとき)は "/usr/local/bin:/usr/ucb:/usr/bin:/bin:." で検索されます。

RUBY_GC_*

GC/チューニングのための環境変数 を参照。

RUBY_MN_THREADS

M:N スレッドスケジューラの動作を、以下の値で指定します。デフォルトは未設定(0 と同じ)です。

-1 を設定すると、すべてのスレッドが 1:1 で動作します(main 以外の Ractor のスレッドも M:N になりません)。

0 または未設定では、main 以外の Ractor のスレッドだけが M:N で動作します。メインスレッドと main Ractor の他のスレッドは 1:1 です。

1 を設定すると、メインスレッド以外のすべてのスレッド(main Ractor の他のスレッドと、main 以外の Ractor のスレッド)が M:N で動作します。

2 を設定すると、メインスレッドを含むすべてのスレッドが M:N で動作します。

-1 と 2 は Ruby 4.1 で追加されました。

2 を指定すると、メインスレッドも他の M:N スレッドと同様に再開されるため、メインスレッドが処理を駆動するプログラムで効果があります。ただしメインスレッドが 1 つの OS スレッドに固定されなくなるので、OS スレッドごとに状態を持つ C 拡張は rb_thread_lock_native_thread() を呼ぶ必要があります。また、プロセスの最初のスレッドで動かす必要があるもの(macOS の AppKit や CFRunLoop、Ruby を組み込んで自前のメインループに戻るホストなど)は動作しません。

Ruby 4.1 から、M:N スレッドでは OS スレッド名を Ruby のスレッドから設定しません。

RUBY_MAX_CPU

M:N スレッドスケジューラが使うネイティブスレッドの最大数を指定します。デフォルトはオンラインの CPU 数です。main 以外の Ractor は M:N スレッドスケジューラを使うので、main 以外の Ractor が使うネイティブスレッドの最大数にもなります。

RUBY_FREE_AT_EXIT

設定すると、終了時に動的に確保したメモリをすべて解放しようとします。デフォルトは未設定です。

RUBY_THREAD_TIMESLICE

スレッドのタイムスライス(quantum)のデフォルトをミリ秒で指定します。デフォルトは 100 ミリ秒です。

RUBY_PAGER

--help の出力に使うページャコマンドを指定します。デフォルトは環境変数 PAGER の値です。起動オプションの詳細に関しては Rubyの起動 を参照してください。

RUBY_BOX

1 を設定すると Ruby::Box が有効になり、Ruby::Box.new が使えるようになります。実験的な機能です。

RUBY_IO_BUFFER_DEFAULT_SIZE

IO::Buffer のデフォルトのバッファサイズを指定します。

RUBY_CRASH_REPORT

クラッシュレポートを保存するパス名のテンプレートを指定します。デフォルトは指定なしです。起動オプション --crash-report=template と同じ意味です(Rubyの起動 を参照)。[feature#19790]

テンプレートには以下の指定子を使えます。

    %%    % そのもの
    %e    実行ファイルの basename
    %E    実行ファイルのパス名(/ は ! に置換されます)
    %f    プログラム名 $0 の basename
    %F    プログラム名 $0 のパス名(/ は ! に置換されます)
    %p    プロセス ID
    %t    ダンプした時刻(エポックからの秒数)
    %NNN  8 進数の文字コード

末尾の単独の % と、上記以外の文字が続く % は捨てられます。/ はディレクトリの区切りとして解釈されます。

テンプレートの先頭が | の場合は、その後ろをコマンドラインとして実行し、レポートをパイプで渡します(テンプレートの展開前に空白で引数に分割されます)。

RUBY_YJIT_ENABLE

設定すると、YJIT を有効にして起動します。YJIT を組み込まずにビルドした Ruby では効果がありません。RubyVM::YJIT も参照してください。

RUBY_ZJIT_ENABLE

設定すると、ZJIT を有効にして起動します。RubyVM::ZJIT も参照してください。

RUBY_THREAD_VM_STACK_SIZE

スレッド生成時に使用される VM スタックのサイズをバイト数で指定します。

RUBY_THREAD_MACHINE_STACK_SIZE

スレッド生成時に使用されるマシンスタックのサイズをバイト数で指定します。

RUBY_FIBER_VM_STACK_SIZE

Fiber 生成時に使用される VM スタックのサイズをバイト数で指定します。

RUBY_FIBER_MACHINE_STACK_SIZE

Fiber 生成時に使用されるマシンスタックのサイズをバイト数で指定します。

これらのスタックサイズ関連の環境変数は実装依存であり、Ruby のバージョンによって変更される可能性があります。値を小さくすることでより多くの Fiber や Thread を同時に実行できるようになる場合がありますが、SystemStackError やセグメンテーション違反が発生しやすくなります。