module function Kernel.#system

system(command, options={}) -> bool | nil[permalink][rdoc]
system(env, command, options={}) -> bool | nil

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。それ以外の終了ステータスの場合は false を返します。コマンドを実行できなかった場合は nil を返します。

終了ステータスは変数 $? で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス 127 を返します。シェルを介さない場合は Ruby の子プロセスがステータス 127 で終了します。コマンドが実行できなかったのか、コマンドが失敗したのかは、普通 $? を参照することで判別可能です。

引数の解釈

この形式では command が shell のメタ文字

  * ? {} [] <> () ~ & | \ $ ; ' ` " \n

を含む場合、shell 経由で実行されます。そうでなければインタプリタから直接実行されます。

[PARAM] command:
command コマンドを文字列で指定します。
[PARAM] env:
更新する環境変数を表す Hash
[PARAM] options:
オプションパラメータ Hash
シェル経由でコマンドを実行

system("echo *") # => true
# fileA fileB fileC ...

[SEE_ALSO] Kernel.#`,Kernel.#spawn,Kernel.#exec,system(3)

system(program, *args, options={}) -> bool | nil[permalink][rdoc]
system(env, program, *args, options={}) -> bool | nil

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。それ以外の終了ステータスの場合は false を返します。コマンドを実行できなかった場合は nil を返します。

終了ステータスは変数 $? で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス 127 を返します。シェルを介さない場合は Ruby の子プロセスがステータス 127 で終了します。コマンドが実行できなかったのか、コマンドが失敗したのかは、普通 $? を参照することで判別可能です。

Hash を options として渡すことで、起動される子プロセスの

などを変更できます。環境変数のクリアなども指定できます。詳しくは Kernel.#spawn を参照してください。

引数の解釈

この形式で呼び出した場合、空白や shell のメタキャラクタもそのまま program の引数に渡されます。先頭の引数が2要素の配列であった場合、第1要素の文字列が実際に起動するプログラムのパスであり、第2要素が「みせかけ」のプログラム名になります。また、第1要素はフルパスで指定しなくても環境変数 PATH から探します。

[PARAM] program:
文字列か2要素の配列です。
[PARAM] args:
program に渡す引数を 0 個以上指定する
[PARAM] env:
更新する環境変数を表す Hash
[PARAM] options:
オプションパラメータ Hash
[EXCEPTION] ArgumentError:
第一引数が配列かつ要素数が 2 でない場合に発生します。
インタプリタから直接コマンドを実行

system("echo", "*") # => true
# *

[SEE_ALSO] Kernel.#`,Kernel.#spawn,Kernel.#exec,system(3)