Emacsはさまざまな変数を通じてオペレーティングシステム環境内の変数へのアクセスを提供します。これらの変数にはシステムの名前、ユーザーのUIDなどが含まれます。
この変数はユーザーのシステムのハードウェアとソフトウェアにたいするGNUの標準コンフィグレーション名(standard GNU configuration name)を保持する。たとえば64ビットGNU/Linuxシステムにたいする典型的な値は‘"x86_64-unknown-linux-gnu"’。
この変数の値は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)サンドボックスシステム。
android
オープンハンドセットアライアンス(OHA: Open Handset Alliance)のAndroidオペレーティングシステム。
ms-dos
MicrosoftのDOS。MS-DOSにたいするDJGPPでコンパイルされたEmacsは、たとえMS-Windows上で実行されていてもsystem-type
がms-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
をテストできます。
この関数は実行中のマシン名を文字列としてリターンする。
この変数が非nil
の場合には、emailアドレスを生成するためにsystem-name
のかわりにこの変数が使用される。たとえばこれはuser-mail-address
のデフォルト値の構築時に使用される。ユーザーの識別を参照のこと。
この関数は環境変数varの値を文字列としてリターンする。varは文字列であること。その環境内でvarが未定義ならgetenv
はnil
をリターンする。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
...
このコマンドはvariableという名前の環境変数の値にvalueをセットする。variableは文字列であること。内部的にはEmacs
Lispは任意の文字列を扱える。しかしvariableは通常はshell識別子として有効、すなわちアルファベットかアンダースコアで始まり、アルファベットか数字またはアンダースコアのシーケンスであること。それ以外ならEmacsのサブプロセスがvariableの値にアクセスを試みるとエラーが発生するかもしれない。valueが省略かnil
の場合(またはプレフィクス引数とともにインタラクティブに呼び出された場合)には、setenv
はその環境からvariableを削除する。それ以外ならvariableは文字列であること。
オプション引数substituteが非nil
なら、value内のすべての環境変数を展開するためにEmacsは関数substitute-env-vars
を呼び出す。
setenv
はprocess-environment
を変更することにより機能する。この変数をlet
でバインドするのも合理的プラクティスである。
setenv
はvariableの新たな値、または環境からvariableが削除されていればnil
をリターンする。
このマクロはbodyを実行する際に、variablesに応じて環境変数を一時的にセットする。終了時には以前の値がリストアされる。引数variablesは(var value)
という形式の文字列ペアーのリストであること。ここでvarは環境変数の名前、valueはその変数の値。
(with-environment-variables (("LANG" "C") ("LANGUAGE" "en_US:en")) (call-process "ls" nil t))
この変数はそれぞれが1つの環境変数を記す文字列リスト。関数getenv
とsetenv
はこの変数により機能する。
process-environment ⇒ ("PATH=/usr/local/bin:/usr/bin:/bin" "USER=lewis"
"TERM=xterm" "SHELL=/bin/bash" "HOME=/home/lewis" ...)
process-environment
に同じ環境変数を指定す複数の要素が含まれる場合には、それらの最初の要素が変数を指定して他は無視される。
この変数はEmacs開始時にその親プロセスからEmacsが継承した環境変数のリストを保持する。
この変数は、(環境変数で見つけた)検索パス内でディレクトリーを区切る文字を示す文字列を保持する。値はUnixとGNUシステムでは":"
、MSシステムでは";"
。
この関数は変数path-separator
の接続ローカル値をリターンする。これはMSシステムかつローカルのdefault-directory
なら";"
、UnixおよびGNUのシステムまたはリモートのdefault-directory
なら":"
。
この関数は環境変数PATH
の値のような検索パス文字列を引数に受け取り、セパレーターで分割してディレクトリーのリストをリターンする。このリスト内ではnil
はカレントディレクトリーを意味する。この関数の名前からはセパレーターは“コロン”となるが、実際に使用するのは変数path-separator
の値。
(parse-colon-path ":/foo:/bar") ⇒ (nil "/foo/" "/bar/")
この変数はEmacsが呼び出された時のプログラム名を保持する。値は文字列でありディレクトリー名は含まれない。
この変数はEmacs実行可能形式が実行されたときに配置されていたディレクトリー名、ディレクトリーが判断できなければnil
をリターンする。
非nil
ならサブディレクトリーlib-srcとetcを探すディレクトリーである。インストールされたEmacsなら通常はnil
。Emacsが標準のインストール位置にそれらのディレクトリーを見つけられないものの、Emacs実行可能形式を含むディレクトリー(たとえばinvocation-directory
)に何らかの関連があるディレクトリーで見つかることができたら非nil
。
この関数はカレント、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
はこれと類似する情報をリターンする。
この関数はEmacsプロセスのプロセスIDを整数としてリターンする。
この変数はEmacs開始前にそのシステムの端末ドライバーで選択されていたerase文字を保持する。
この変数はシステムのnullデバイスを保持する。値はUnixおよびGNUシステムでは"/dev/null"
、MSシステムでは"NUL"
。
この関数は変数null-device
の接続ローカル値をリターンする。これはMSシステムかつローカルのdefault-directory
なら"NUL"
、UnixおよびGNUシステムまたはリモートのdefault-directory
なら"/dev/null"
。