Next: , Previous: , Up: オペレーティングシステムのインターフェース   [Contents][Index]


42.3 オペレーティングシステムの環境

Emacsはさまざまな変数を通じてオペレーティングシステム環境内の変数へのアクセスを提供します。これらの変数にはシステムの名前、ユーザーのUIDなどが含まれます。

Variable: system-configuration

この変数はユーザーのシステムのハードウェアとソフトウェアにたいするGNUの標準コンフィグレーション名(standard GNU configuration name)を保持する。たとえば64ビットGNU/Linuxシステムにたいする典型的な値は‘"x86_64-unknown-linux-gnu"’。

Variable: system-type

この変数の値はEmacs実行中のオペレーティングシステムのタイプを示すシンボル。可能な値は:

aix

IBMのAIX。

berkeley-unix

Berkeley BSDとその変種。

cygwin

MS-Windowsで最上位のPosixレイヤーであるCygwin。

darwin

Darwin (macOS).

gnu

(HURDとMachから構成される)GNUシステム。

gnu/linux

GNU/Linuxシステム — すなわちLinuxカーネルを使用するGNUシステムの変種(これらのシステムは人がしばしば“Linux”と呼ぶシステムだが実際にはLinuxは単なるカーネルであってシステム全体ではない)。

gnu/kfreebsd

FreeBSDカーネルによる(glibcベースの)GNUシステム。

haiku

Beオペレーティングシステムから派生したHaikuオペレーティングシステム。

hpux

ヒューレット・パッカードのHPUXオペレーティングシステム。

nacl

Google Native Client(NaCl)サンドボックスシステム。

ms-dos

MicrosoftのDOS。MS-DOSにたいするDJGPPでコンパイルされたEmacsは、たとえMS-Windows上で実行されていてもsystem-typems-dosにバインドされる。

usg-unix-v

AT&TのUnix System V。

windows-nt

MicrosoftのWindows NT、9X以降。たとえばWindows 10でもsystem-typeの値は常にwindows-nt

わたしたちは絶対に必要になるまでは、より細分化するために新たなシンボルを追加したくありません。実際のところ将来的にはこれらの候補のいくつかを取り除きたいと思っています。system-typeで許されているより細分化する必要がある場合には、たとえば正規表現にたいしてsystem-configurationをテストできます。

Function: system-name

この関数は実行中のマシン名を文字列としてリターンする。

User Option: mail-host-address

この変数が非nilの場合には、emailアドレスを生成するためにsystem-nameのかわりにこの変数が使用される。たとえばこれはuser-mail-addressのデフォルト値の構築時に使用される。ユーザーの識別を参照のこと。

Command: getenv var &optional frame

この関数は環境変数varの値を文字列としてリターンする。varは文字列であること。その環境内でvarが未定義ならgetenvnilをリターンする。varがセットされているがnull(訳注: 空文字列)なら‘""’をリターンする。Emacs内では環境変数とそれらの値のリストは変数process-environment内に保持されている。

(getenv "USER")
     ⇒ "lewis"

shellコマンドprintenvは環境変数のすべて、または一部をプリントする:

bash$ printenv
PATH=/usr/local/bin:/usr/bin:/bin
USER=lewis
TERM=xterm
SHELL=/bin/bash
HOME=/home/lewis
Command: setenv variable &optional value substitute

このコマンドはvariableという名前の環境変数の値にvalueをセットする。variableは文字列であること。内部的にはEmacs Lispは任意の文字列を扱える。しかしvariableは通常はshell識別子として有効、すなわちアルファベットかアンダースコアで始まり、アルファベットか数字またはアンダースコアのシーケンスであること。それ以外ならEmacsのサブプロセスがvariableの値にアクセスを試みるとエラーが発生するかもしれない。valueが省略かnilの場合(またはプレフィクス引数とともにインタラクティブに呼び出された場合)には、setenvはその環境からvariableを削除する。それ以外ならvariableは文字列であること。

オプション引数substituteが非nilなら、value内のすべての環境変数を展開するためにEmacsは関数substitute-env-varsを呼び出す。

setenvprocess-environmentを変更することにより機能する。この変数をletでバインドするのも合理的プラクティスである。

setenvvariableの新たな値、または環境からvariableが削除されていればnilをリターンする。

Macro: with-environment-variables variables body…

このマクロはbodyを実行する際に、variablesに応じて環境変数を一時的にセットする。終了時には以前の値がリストアされる。引数variables(var value)という形式の文字列ペアーのリストであること。ここでvarは環境変数の名前、valueはその変数の値。

(with-environment-variables (("LANG" "C")
                             ("LANGUAGE" "en_US:en"))
  (call-process "ls" nil t))
Variable: process-environment

この変数はそれぞれが1つの環境変数を記す文字列リスト。関数getenvsetenvはこの変数により機能する。

process-environment
⇒ ("PATH=/usr/local/bin:/usr/bin:/bin"
    "USER=lewis"
    "TERM=xterm"
    "SHELL=/bin/bash"
    "HOME=/home/lewis"
    …)

process-environmentに同じ環境変数を指定す複数の要素が含まれる場合には、それらの最初の要素が変数を指定して他は無視される。

Variable: initial-environment

この変数はEmacs開始時にその親プロセスからEmacsが継承した環境変数のリストを保持する。

Variable: path-separator

この変数は、(環境変数で見つけた)検索パス内でディレクトリーを区切る文字を示す文字列を保持する。値はUnixとGNUシステムでは":"、MSシステムでは";"

Function: path-separator

この関数は変数path-separatorの接続ローカル値をリターンする。これはMSシステムかつローカルのdefault-directoryなら";"、UnixおよびGNUのシステムまたはリモートのdefault-directoryなら":"

Function: parse-colon-path path

この関数は環境変数PATHの値のような検索パス文字列を引数に受け取り、セパレーターで分割してディレクトリーのリストをリターンする。このリスト内ではnilはカレントディレクトリーを意味する。この関数の名前からはセパレーターは“コロン”となるが、実際に使用するのは変数path-separatorの値。

(parse-colon-path ":/foo:/bar")
     ⇒ (nil "/foo/" "/bar/")
Variable: invocation-name

この変数はEmacsが呼び出された時のプログラム名を保持する。値は文字列でありディレクトリー名は含まれない。

Variable: invocation-directory

この変数はEmacs実行可能形式が実行されたときに配置されていたディレクトリー名、ディレクトリーが判断できなければnilをリターンする。

Variable: installation-directory

nilならサブディレクトリーlib-srcetcを探すディレクトリーである。インストールされたEmacsなら通常はnil。Emacsが標準のインストール位置にそれらのディレクトリーを見つけられないものの、Emacs実行可能形式を含むディレクトリー(たとえばinvocation-directory)に何らかの関連があるディレクトリーで見つかることができたら非nil

Function: load-average &optional use-float

この関数はカレント、1分、5分、15分のロードアベレージ(load averages: 平均負荷)をリストでリターンする。このロードアベレージはシステム上で実行を試みているプロセス数を示す。

デフォルトでは値はシステムロードアベレージを100倍にした整数だが、use-floatが非nilなら100を乗ずることなくこれらの値は浮動小数点数としてリターンされる。

ロードアベレージ入手が不可能ならこの関数はエラーをシグナルする。いくつかのプラットフォームではロードアベレージへのアクセスにカーネル情報を読み取れるように、通常は推奨されないsetuidかsetgidしたEmacsのインストールを要する。

1分のロードアベレージは利用できるが、5分と15分のアレージは利用できなければ、この関数は利用可能なアベレージを含んだ短縮されたリストをリターンする。

(load-average)
     ⇒ (169 48 36)
(load-average t)
     ⇒ (1.69 0.48 0.36)

shellコマンドのuptimeはこれと類似する情報をリターンする。

Function: emacs-pid

この関数はEmacsプロセスのプロセスIDを整数としてリターンする。

Variable: tty-erase-char

この変数はEmacs開始前にそのシステムの端末ドライバーで選択されていたerase文字を保持する。

Variable: null-device

この変数はシステムのnullデバイスを保持する。値はUnixおよびGNUシステムでは"/dev/null"、MSシステムでは"NUL"

Function: null-device

この関数は変数null-deviceの接続ローカル値をリターンする。これはMSシステムかつローカルのdefault-directoryなら"NUL"、UnixおよびGNUシステムまたはリモートのdefault-directoryなら"/dev/null"


Next: ユーザーの識別, Previous: Emacsからの脱出, Up: オペレーティングシステムのインターフェース   [Contents][Index]