Next: ユーザーの識別, Previous: Emacsからの脱出, Up: オペレーティングシステムのインターフェース [Contents][Index]
Emacsはさまざまな変数を通じてオペレーティングシステム環境内の変数へのアクセスを提供します。これらの変数にはシステムの名前、ユーザーのUIDなどが含まれます。
この変数はユーザーのシステムのハードウェアとソフトウェアにたいするGNUの標準コンフィグレーション名(standard GNU configuration name)を保持する。たとえば64ビットGNU/Linuxシステムにたいする典型的な値は‘"x86_64-unknown-linux-gnu"’。
この変数の値はEmacs実行中のオペレーティングシステムのタイプを示すシンボル。可能な値は:
aixIBMのAIX。
berkeley-unixBerkeley BSDとその変種。
cygwinMS-Windowsで最上位のPosixレイヤーであるCygwin。
darwinDarwin (macOS).
gnu(HURDとMachから構成される)GNUシステム。
gnu/linuxGNU/Linuxシステム — すなわちLinuxカーネルを使用するGNUシステムの変種(これらのシステムは人がしばしば“Linux”と呼ぶシステムだが実際にはLinuxは単なるカーネルであってシステム全体ではない)。
gnu/kfreebsdFreeBSDカーネルによる(glibcベースの)GNUシステム。
haikuBeオペレーティングシステムから派生したHaikuオペレーティングシステム。
hpuxヒューレット・パッカードのHPUXオペレーティングシステム。
naclGoogle Native Client(NaCl)サンドボックスシステム。
ms-dosMicrosoftのDOS。MS-DOSにたいするDJGPPでコンパイルされたEmacsは、たとえMS-Windows上で実行されていてもsystem-typeがms-dosにバインドされる。
usg-unix-vAT&TのUnix System V。
windows-ntMicrosoftの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"。
Next: ユーザーの識別, Previous: Emacsからの脱出, Up: オペレーティングシステムのインターフェース [Contents][Index]