コンテンツにスキップ

「環境変数」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
編集の要約なし
AshMyzk (トーク | 投稿記録)
リンクを修正
 
(8人の利用者による、間の104版が非表示)
2行目: 2行目:
[[de:Umgebungsvariablen]]
[[de:Umgebungsvariablen]]
[[en:Environment variables]]
[[en:Environment variables]]
[[es:Environment variables]]
[[hu:Environment variables]]
[[pt:Environment variables]]
[[ru:Environment variables]]
[[ru:Environment variables]]
[[zh-hans:Environment variables]]
環境変数とは1つ、または複数のアプリケーションによって使用されるデータを含んだ名前付きオブジェクトです。簡単に言えば、名前と値がある変数です。環境変数の値は例えば、実行可能ファイルのファイルシステムにおける場所や使用するデフォルトのエディタ、システムロケールの設定などになります。Linux に慣れてないユーザーは、環境変数で設定をするのは御しがたいと考えがちですが、複数のアプリケーションと Linux のプロセスの設定を共有するシンプルな方法として環境変数が存在しています。
{{Related articles start}}
{{Related|デフォルトアプリケーション}}
{{Related|systemd/ユーザー#環境変数}}
{{Related articles end}}
環境変数は、1つ以上のアプリケーションによって使用されるデータを含む名前付きのオブジェクトです。簡単に言えば、名前と値を持つ変数です。環境変数の値には、例えばファイルシステム内のすべての実行可能ファイルの場所、使用すべきデフォルトのエディタ、またはシステムロケールの設定などが含まれます。Linux に不慣れなユーザーは、このような設定の管理方法を少し扱いづらいと感じることがよくあります。しかし、環境変数は、複数のアプリケーションやプロセス間で設定を共有する簡単な方法を提供します。


== ユーティリティ ==
== ユーティリティ ==

{{Pkg|coreutils}} パッケージには ''printenv'' と ''env'' というプログラムが入っています。現在設定されている環境変数とその値を表示するには:
{{Pkg|coreutils}} パッケージには {{man|1|printenv}} と {{man|1|env}} というプログラムが含まれています。現在の環境変数とその値を一覧表示するには:


$ printenv
$ printenv


{{Note|環境変数の中にはユーザ個別のものも存在します。{{ic|printenv}} の出力を非特権ユーザの場合と root ユーザの場合で比較して確認してみましょう。}}
{{Note|Some environment variables are user-specific. Check by comparing the outputs of ''printenv'' as an unprivileged user and as ''root''.}}


''env'' ユーティリティを使うことで、環境変数を変更してコマンドを実行することができます。以下の例では、環境変数 {{ic|EDITOR}} を {{ic|vim}} に設定して ''xterm'' を起動します。以下のコマンドを実行しても、グローバルな {{ic|EDITOR}} 変数には影響を与えません。
The {{ic|env}} utility can be used to run a command under a modified environment. The following example will launch ''xterm'' with the environment variable {{ic|EDITOR}} set to {{ic|vim}}. This will not affect the global environment variable {{ic|EDITOR}}.


$ env EDITOR=vim xterm
$ env EDITOR=vim xterm


[[シェル]] の {{man|1p|set}} 組み込みコマンドを使えば、シェルオプションの値を変更したり、位置のパラメータを設定したり、シェル変数の名前とその値を出力したりできます。
The [[Bash]] builtin ''set'' allows you to change the values of shell options and set the positional parameters, or to display the names and values of shell variables. For more information, see the ''set'' documentation: [http://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin].


各プロセスはその環境変数を {{ic|/proc/$PID/environ}} ファイルに保存しています。このファイルには、ヌル文字 ({{ic|\x0}}) で区切られたキーと値のペアが含まれています。[[sed]] を使用すると、より読み易い形式で取得できます。例: {{ic|sed 's:\x0:\n:g' /proc/$PID/environ}}。
To see what environment variables are available to a specific process, look in {{ic|/proc/${PID}/environ}}. This file contains special {{ic|\x0}} characters. You can parse it with this function.


== 変数の定義 ==
# envof() { sed 's/\x0/\n/g' /proc/${1}/environ; }
# envof 1
TERM=linux


環境を不必要に汚染しないために、変数のスコープを制限するように努めるべきです。実際、グラフィカルセッションや systemd サービスでは、変数を有効にするために特定の場所で設定することが要求されます。環境変数のスコープは、それらが影響を与えるコンテキストに分けられます:
== サンプル ==
The following section lists a number of common environment variables used by a Linux system and describes their values.


* [[#グローバル|グローバル]]: あらゆるユーザが実行する全プログラム。Systemd サービスは含まれません。
*{{ic|DE}} indicates the ''D''esktop ''E''nvironment being used. [[xdg-open]] will use it to choose more user-friendly file-opener application that desktop environment provides. Some packages need to be installed to use this feature. For [[GNOME]], that would be {{pkg|libgnome}}; for [[Xfce]] this is {{pkg|exo}}. Recognised values of {{ic|DE}} variable are: {{ic|gnome}}, {{ic|kde}}, {{ic|xfce}}, {{ic|lxde}} and {{ic|mate}}.
* [[#ユーザーごと|ユーザ別]]: 特定のユーザが実行する全プログラム。Systemd ユーザサービス ([[systemd/ユーザー#環境変数]] を参照) やグラフィカルアプリケーション ([[#グラフィック環境]] を参照) は含まれません。


=== グローバル ===
:The {{ic|DE}} environment variable needs to be exported before starting the window manager. For example:


==== シェルの初期化ファイルを使う ====
{{hc|~/.xinitrc|2=
export DE="xfce"
exec openbox
}}


大半の Linux ディストリビューションは、あなたに {{ic|/etc/profile}} 等のファイルに環境変数の追加・変更を行うよう指示します。また、{{ic|/etc/locale.conf}} のような変数設定を含むパッケージ固有の設定ファイルがあることも覚えておいてください。環境変数の維持・管理は必ず行い、環境変数を含むことができる多数のファイルに注意を払うようにしてください。原則的に、あらゆるシェルスクリプトは環境変数の初期化に使うことができますが、以下のような UNIX の慣例に従い特定のファイルでのみ行われるべきです。
:This will make ''xdg-open'' use the more user-friendly ''exo-open'', because it assumes it is running inside Xfce. Use ''exo-preferred-applications'' for configuring.


以下のファイルは、システムのグローバルな環境変数を定義するために使用できますが、それぞれに異なる制限があります:
*{{ic|DESKTOP_SESSION}} is similar to {{ic|DE}}, but used in [[LXDE]] desktop enviroment: when {{ic|DESKTOP_SESSION}} is set to {{ic|LXDE}}, ''xdg-open'' will use ''pcmanfm'' file associations.


* {{ic|/etc/environment}} は [[#pam_env を使う|pam_env モジュール]]によって使用され、シェルに依存しないため、スクリプトやグロブ展開は使用できません。このファイルは、{{ic|1=''変数=値''}} という形式しか受け入れません。
*{{ic|PATH}} contains a colon-separated list of directories in which your system looks for executable files. When a regular command (e.g., ''ls'', ''rc-update'' or ''ic|emerge'') is interpreted by the shell (e.g., ''bash'' or ''zsh''), the shell looks for an executable file with the same name as your command in the listed directories, and executes it. To run executables that are not listed in {{ic|PATH}}, the absoute path to the executable must be given: {{ic|/bin/ls}}.
* {{ic|/etc/profile}} は、ログインシェル''のみ''に対して変数を初期化します。しかし、このファイルはスクリプト (例: {{ic|/etc/profile.d/}} 内にあるファイル) を実行し、すべての [[wikipedia:ja:Bourne Shell|Bourne shell]] 互換シェルで使用することができます。
* シェル固有の設定ファイル - [[シェル]]のグローバルな設定ファイルで、変数の初期化やスクリプトの実行を行います。例えば [[Bash#設定ファイル]] (例: {{ic|~/.bashrc}})) や [[Zsh#スタートアップ/シャットダウン ファイル]] (例: {{ic|~/.zshrc}}) です。


以下の Bash ヘルパ関数を使えば、複数のディレクトリを {{ic|PATH}} 環境変数に末尾追加することができます。環境変数を定義しているファイル ({{ic|~/.bashrc}} など) の戦闘にこの関数を追加してください。この関数は、ファイルシステム上に実際に存在するディレクトリのみを追加し、重複するエントリは作成しません。
{{Note|It is advised not to include the current working directory ({{ic|.}}) into your {{ic|PATH}} for security reasons, as it may trick the user to execute vicious commands.}}


{{bc|<nowiki>
*{{ic|HOME}} contains the path to the home directory of the current user. This variable can be used by applications to associate configuration files and such like with the user running it.
add_paths() {
for d in "$@"; do
[[ -d "$d" && ! "$PATH" =~ (^|:)$d(:|$) ]] && PATH="$PATH:$d"
done
}


add_paths ~/bin ~/scripts
*{{ic|PWD}} contains the path to your working directory.
</nowiki>}}


ほとんどのシェル (Bash、Zsh、[[fish]] を含む) では、{{ic|export}} コマンドを使って環境に変数を追加することができます。これにより、{{ic|~/my-environment.sh}} などのように通常のファイルで環境変数を定義することができます:
*{{ic|OLDPWD}} contains the path to your previous working directory, that is, the value of {{ic|PWD}} before last ''cd'' was executed.


{{hc|~/my-environment.sh|2=
*{{ic|SHELL}} contains the name of the running, interactive shell, e.g., {{ic|bash}}
export EDITOR=vim
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
}}


このファイルは、シェルのスタートアップファイルから source することができます:
*{{ic|TERM}} contains the name of the running terminal, e.g., {{ic|xterm}}


{{hc|~/.bashrc|source ~/my-environment.sh}}
*{{ic|PAGER}} contains command to run the program used to list the contents of files, e.g., {{ic|/bin/less}}.
{{hc|~/.config/fish/config.fish|source ~/my-environment.sh}}


==== pam_env を使う ====
*{{ic|EDITOR}} contains the command to run the lightweight program used for editing files, e.g., {{ic|/usr/bin/nano}}. For example, you can write an interactive switch between ''gedit'' under [[Xorg|X]] or ''nano'' in this example):


{{man|8|pam_env}} [[PAM]] モジュールは、環境変数の設定を以下のファイルから順番にロードします: {{ic|/etc/security/pam_env.conf}} と {{ic|/etc/environment}} の順です。
export EDITOR="$(if <nowiki>[[</nowiki> -n $DISPLAY <nowiki>]]</nowiki>; then echo 'gedit'; else echo 'nano'; fi)"


{{Note|
*{{ic|VISUAL}} contains command to run the full-fledged editor that is used for more demanding tasks, such as editing mail (e.g., {{ic|vi}}, [[vim]], [[emacs]] etc).
* これらのファイルは、他のファイル、特に、{{ic|~/.profile}}、{{ic|~/.bash_profile}}、{{ic|~/.zshenv}} より前に読み込まれます。
* 非推奨の {{ic|~/.pam_environment}} はもう読み込まれません。{{Bug|68945}} を参照してください。
}}


{{ic|/etc/environment}} では、{{ic|1=''変数''=''値''}} というペアを1行に1つずつ記述しなければなりません。例:
*{{ic|MAIL}} contains the location of incoming email. The traditional setting is {{ic|/var/spool/mail/$LOGNAME}}.


{{hc|/etc/environment|2=
*{{ic|BROWSER}} contains the path to the web browser. Helpful to set in an interactive shell configuration file so that it may be dynamically altered depending on the availability of a graphic environment, such as [[Xorg|X]]:
EDITOR=nano
}}


{{ic|/etc/security/pam_env.conf}} は以下の形式で記述します:
if <nowiki>[</nowiki> -n "$DISPLAY" <nowiki>]</nowiki>; then
export BROWSER=firefox
else
export BROWSER=links
fi


{{hc|/etc/security/pam_env.conf|2=
*{{ic|ftp_proxy and http_proxy}} contains FTP and HTTP proxy server, respectively:
VARIABLE [DEFAULT=''value''] [OVERRIDE=''value'']
ftp_proxy="<nowiki>ftp://192.168.0.1:21</nowiki>"
}}
http_proxy="<nowiki>http://192.168.0.1:80</nowiki>"

{{ic|@{HOME} }} と {{ic|@{SHELL} }} は、{{ic|/etc/passwd}} で定義されているものに拡張される特別な変数です。次の例は、{{ic|HOME}} 環境変数を別の変数に展開する方法を示しています:


{{hc|/etc/security/pam_env.conf|2=
*{{ic|MANPATH}} contains a colon-separated list of directories in which ''man'' searches for the man pages.
XDG_CONFIG_HOME DEFAULT=@{HOME}/.config
{{Note|In {{ic|/etc/profile}}, there is a comment that states "Man is much better than us at figuring this out", so this variable should generally be left as default, i.e. {{ic|/usr/share/man:/usr/local/share/man}}
}}
}}


{{Note|変数 {{ic|${HOME} }} および {{ic|${SHELL} }} は、{{ic|HOME}} および {{ic|SHELL}} 環境変数にはリンクされていません。これらはデフォルトでは設定されていません。}}
*{{ic|INFODIR}} contains a colon-separated list of directories in which the info command searches for the info pages, e.g., {{ic|/usr/share/info:/usr/local/share/info}}


また、この形式では、{{ic|${''VARIABLE''} }} を使って、既に定義されている変数を他の変数の値で展開することができます。例えば:
*{{ic|TZ}} can be used to to set a time zone different to the system zone for a user. The zones listed in {{ic|/usr/share/zoneinfo/}} can be used as reference, for example {{ic|1=TZ="/usr/share/zoneinfo/Pacific/Fiji"}}


GOPATH DEFAULT=${XDG_DATA_HOME}/go
== 変数の定義 ==


{{ic|1=''VARIABLE''=''value''}} のペアも可能ですが、これらのペアでは変数の展開はサポートされていません。詳しくは {{man|5|pam_env.conf}} を参照してください。
[[Systemd/ユーザー#環境変数]]も見て下さい。


=== グロバル ===
=== ザーごと ===


環境変数をグローバルに定義したくないという時もあるでしょう。例えば、{{ic|PATH}} に {{ic|/home/my_user/bin}} を追加したいが、システム上の他のユーザーには同じ {{ic|PATH}} を使って欲しくないという場合が考えられます。様々なファイルを使うことでローカルに環境変数を定義することができます:
Most Linux distributions tell you to change or add environment variable definitions in {{ic|/etc/profile}} or other locations. Be sure to maintain and manage the environment variables and pay attention to the numerous files that can contain environment variables. In principle, any shell script can be used for initializing environmental variables, but following traditional UNIX conventions, these statements should be only be present in some particular files.


* [[シェル]]のユーザ設定ファイル。例えば、[[Bash#設定ファイル]] や [[Zsh#スタートアップ/シャットダウン ファイル]]。
The following files should be used for defining global environment variables on your system: {{ic|/etc/profile}}, {{ic|/etc/bash.bashrc}} and {{ic|/etc/environment}}. Each of these files has different limitations, so you should carefully select the appropriate one for your purposes.
** あなたが開くターミナル (例: コマンドラインアプリケーションのみ) に変数のスコープを制限しない限り、ログインシェルの変数も変更されます。
* [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]は {{ic|~/.config/environment.d/*.conf}} から読み込まれます。


ローカルで使用するディレクトリを {{ic|PATH}} に追加するには、{{ic|~/.bash_profile}} に次のように記述します:
*{{ic|/etc/profile}} initializes variables for login shells ''only''. It does, however, run scripts and can be used all [[wikipedia:Bourne shell|Bourne shell]] compatible shells.
*{{ic|/etc/bash.bashrc}} initializes variables for interactive shells ''only''. It also runs scripts but (as its name implies) is Bash specific.
*{{ic|/etc/environment}} is used by the PAM-env module and is agnostic to login/non-login, interactive/non-interactive and also Bash/non-Bash, so scripting or glob expansion cannot be used. The file only accepts {{ic|1=''variable=value''}} pairs.


export PATH="${PATH}:/home/my_user/bin"
In this example, we add {{ic|~/bin}} directory to the {{ic|PATH}} for respective user. To do this, just put this in your preferred global environment variable config file ({{ic|/etc/profile}} or {{ic|/etc/bash.bashrc}}):


変数をアップデートするために、再ログインするかファイルを [[source]] してください: {{ic|$ source ~/.bash_profile}}
{{bc|<nowiki>
# If user ID is greater than or equal to 1000 & if ~/bin exists and is a directory & if ~/bin is not already in your $PATH
# then export ~/bin to your $PATH.
if [[ $UID -ge 1000 && -d $HOME/bin && -z $(echo $PATH | grep -o $HOME/bin) ]]
then
export PATH=$HOME/bin:${PATH}
fi
</nowiki>}}


{{Note|dbus デーモンや systemd のユーザインスタンスは、{{ic|~/.bashrc}} などのような場所で設定された環境変数を継承しません。これはつまり、dbus によってアクティブ化されたプログラム ([[GNOME Files]] など) は、そのような変数をデフォルトで使用しないことを意味します。[[Systemd/ユーザー#環境変数]] を参照してください。}}
=== ユーザーごと ===


環境変数をグローバルに定義したくないという時もあるでしょう。例えば、{{ic|PATH}} に {{ic|/home/my_user/bin}} を追加したいがシステム上の他のユーザは同じ {{ic|PATH}} を使っ欲しくないという場合が考えらます。様々ファイルを使うこローカル環境変数を定義することができます:
{{Tip|{{ic|export -p}} を実行することで、ユーザセッション対し宣言さたグローバル環境変数とローカル環境変数をることができます。}}


==== グラフィック環境 ====
# シェルの設定ファイル、例えば [[Bash#設定ファイル]] や [[Zsh#設定ファイル]]。
# {{ic|~/.profile}} is used by many shells as fallback, see [[wikipedia:Unix_shell#Configuration_files_for_shells]].
# {{ic|~/.pam_environment}} is the user specific equivalent of {{ic|/etc/environment}}, used by PAM-env module. See {{ic|pam_env(8)}} for details.


環境変数がグラフィカルなアプリケーションにしか影響しない場合は、グラフィカルセッション内でのみ設定することにより、その範囲を制限することができます。スコープを大きい順に並べると:
To add a directory to the {{ic|PATH}} for local usage, put following in {{ic|~/.bash_profile}}:


* [[#Xorg セッションごと]] および [[#Wayland セッションごと]] - DE を含むグラフィカルセッション全体に影響します。
export PATH="${PATH}:/home/my_user/bin"
* [[#デスクトップ環境セッションごと]] - グラフィカルセッション内で生成されたアプリケーションに影響を与えます。DE 自体にも影響を与える可能性があります。
* [[#アプリケーションごと]] - 特定のグラフィカル アプリケーションだけに影響します。


===== デスクトップ環境セッションごと =====
To update the variable, re-login or ''source'' the file: {{ic|$ source ~/.bash_profile}}.


一部のグラフィカル環境 (例えば [[KDE Plasma]]) は、ログイン時のシェルスクリプト実行をサポートしており、環境変数の設定に利用することができます。例としては [[KDE#自動起動]] を参照してください。
==== グラフィカルアプリケーション ====


===== Xorg セッションごと =====
GUI アプリケーションの環境変数を設定したいときは、[[xinitrc]] に変数を記述することができます。例:


Xorg セッションの環境を変更する手順は、Xorg セッションの起動方法によって異なります:
{{hc|1=~/.xinitrc|2=
* ほとんどの[[ディスプレイマネージャ]]は [[xprofile]] を読み込みます。
export PATH="${PATH}:~/scripts"
* [[startx]] と [[SLiM]] は [[xinitrc]] を実行します。
export GUIVAR=value}}
* [[XDM]] は {{ic|~/.xsession}} を実行します: [[XDM#セッションの定義]] を参照して下さい。
* [[LightDM]][https://gitlab.archlinux.org/archlinux/packaging/packages/lightdm/-/blob/main/Xsession]、[[Plasma Login Manager]][https://github.com/KDE/plasma-login-manager/blob/master/data/scripts/Xsession]、[[SDDM]][https://github.com/sddm/sddm/blob/master/data/scripts/Xsession] は、ログイン シェルのスタートアップ スクリプトも読み込みます。例えば、[[bash]] の場合は {{ic|~/.bash_profile}}、[[zsh]] の場合は {{ic|~/.zprofile}} および {{ic|~/.zlogin}} です。


スクリプトの終わりはどのファイルであるかに依存し、高度な構文は使用するシェルに依存しますが、基本的な使い方は普遍的です:
=== セッションごと ===


{{hc|~/.xprofile, ~/.xinitrc, or ~/.xsession|2=
Sometimes even stricter definitions are required. One might want to temporarily run executables from a specific directory created without having to type the absolute path to each one, or editing {{ic|~/.bash_profile}} for the short time needed to run them.
...
export ''GUI_VAR''=''value''
...
}}


===== Wayland セッションごと =====
In this case, you can define the {{ic|PATH}} variable in your current session, combined with the ''export'' command. As long as you do not log out, the {{ic|PATH}} variable will be using the temporary settings. To add a session-specific directory to {{ic|PATH}}, issue:

[[Wayland]] は Xorg 関連のファイルを起動しないので、[[GDM]] と [[KDE Plasma]] は代わりに [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]を読み込みます。

{{hc|~/.config/environment.d/envvars.conf|2=
''GUI_VAR''=''value''
}}

Wayland セッションをサポートする他のディスプレイマネージャ (例: [[SDDM]]) は、まだこれを直接はサポートしていません。しかし、[[LightDM]]、[[Plasma Login Manager]]、[[SDDM]] はログインシェルのスタートアップスクリプトを Wayland セッションでも読み込みます。

[[greetd]] も {{ic|/etc/profile}} および {{ic|~/.profile}} を読み込みます。この動作は、デフォルトで有効になっている {{ic|source_profile}} 設定によって制御されます。

{{ic|~/.bash_profile}} などのスタートアップスクリプトを読み込むディスプレイマネージャを使用していて、{{ic|environment.d}} を使用したい場合、以下のように読み込むことができます:

{{hc|~/.bash_profile|
# systemd-environment-d-generator(8) を使用して環境を生成し、その変数をエクスポートする
set -o allexport
source <(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)
set +o allexport
}}
{{Note|{{ic|/usr/lib/systemd/user-environment-generators}} にある他のジェネレーター、例えば {{ic|60-flatpak}} は環境変数の値を引用符で囲まない場合があります。この場合、出力は {{ic|export -- "$(/usr/lib/systemd/user-environment-generators/60-flatpak)"}} を使用して読み込む必要があります。}}

===== アプリケーションごと =====

セッション全体ではなく、特定のアプリケーションにのみ環境変数を設定するには、そのアプリケーションの ''.desktop'' ファイルを編集してください。その方法は [[デスクトップエントリ#環境変数の変更]] を参照してください。

[[Steam]] ゲームでは、起動オプションを編集することでプログラムの環境を設定することができます。[[Steam#起動オプション]] を参照してください。

=== セッションまたはシェルごと ===

時として、一時的な変数のみが必要である場合もあります。特定のディレクトリ内の実行ファイルを実行する際に一時的に絶対パスを入力する手間を省きたい場合や、一時的な短いシェルスクリプトでそのパスを使用したい場合があるでしょう。

例えば、セッション固有のディレクトリを {{ic|PATH}} に追加するには:


$ export PATH="${PATH}:/home/my_user/tmp/usr/bin"
$ export PATH="${PATH}:/home/my_user/tmp/usr/bin"

シェル固有のディレクトリのみを {{ic|PATH}} に追加するには:

$ PATH="${PATH}:/home/my_user/tmp/usr/bin"

Bash では、{{ic|PATH}} は既にデフォルトで export されているので、上記のどちらの方法を用いても、変数を上書きしない限り、変数の変更がサブプロセスから見えてしまいます。export された変数とされていない変数の違いをよりわかりやすく比較するには、以下を実行してみてください:

$ MYVAR="shell-only"
$ bash -c 'echo $MYVAR' # 何も表示されない
$ export MYVAR="session-wide"
$ bash -c 'echo $MYVAR' # 表示される。すなわち、セッション全体に反映されている

== 例 ==

以下のセクションでは Linux システムで一般的に使われている環境変数を並べており、それぞれの値について説明しています。

=== デスクトップ環境の検出 ===

; XDG_CURRENT_DESKTOP:
コロンで区切られた文字列リストを含む [[freedesktop.org]] 変数。現在の[[デスクトップ環境]]を示します[https://specifications.freedesktop.org/mime-apps-spec/latest/file.html]。活発に開発されているデスクトップ環境の標準化された値として次があります: {{ic|GNOME}}、{{ic|GNOME-Flashback}}、{{ic|KDE}}、{{ic|LXDE}}、{{ic|LXQt}}、{{ic|MATE}}、{{ic|TDE}}、{{ic|Unity}}、{{ic|XFCE}}、{{ic|EDE}}、{{ic|Cinnamon}}、{{ic|Pantheon}}、{{ic|DDE}} [https://specifications.freedesktop.org/menu-spec/latest/onlyshowin-registry.html]。
{{Tip|
* Cinnamon は、他のデスクトップ環境[https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/commit/be0c630a19aa1788ef731def911770ce497d6ba3 より後に]登録されました。そのため、[[Qt]][https://github.com/qt/qtbase/blob/dev/src/gui/platform/unix/qgenericunixtheme.cpp#L156] など一部のソフトウェアは、登録前の値である {{ic|X-CINNAMON}} を期待します。
* {{ic|Hyprland}} は、[[Hyprland]] 用として非公式に認められています。
}}
; XDG_SESSION_DESKTOP:
{{ic|XDG_CURRENT_DESKTOP}} と似ていますが、単一の文字列しか許可しません。その名前にも関わらず、[https://gitlab.gnome.org/GNOME/gtk/-/issues/1224#note_270915 これは freedesktop.org によって標準化されたものではありません]。
; DE:
使用中のデスクトップ環境 (''d''esktop ''e''nvironment) を示すレガシーな変数です。どのような値を取りうるかについての中心的なドキュメントはありませんが、[[xdg-utils#環境変数|xdg-utils]] は多くのデスクトップ環境についてのリファレンスを提供しています。
; DESKTOP_SESSION:
これもレガシーな変数です。{{ic|DE}} に似ていますが、それよりは一般的ではありません。セッションの ({{ic|/usr/share/xsessions/}} 内の) [[デスクトップエントリ]]へのパスを格納できます [https://github.com/qt/qtbase/blob/6.3/src/gui/platform/unix/qgenericunixservices.cpp#L92-L107]。
; WINDOW_MANAGER:
デスクトップ環境で使用する[[ウィンドウマネージャ]]を''選択''するために時々使われる変数です。他のプログラムが読み取るために、既に選択されているディスプレイマネージャやデスクトップ環境によって設定される他の変数とは対照的です。
; DISPLAY:
ホスト、ディスプレイ、スクリーンを指定するために X Window System によって使用されます。形式は {{ic|''ホスト名'':''ディスプレイ''.''スクリーン''}} です。ディスプレイとは、共通の入力デバイス群 (キーボードやマウスなど) を共有するスクリーンの集まりを指します。ホスト名は、ディスプレイが接続されるマシンの名前を指定するためにかつて使用されていましたが、X クライアントと同じコンピュータ上で X サーバが実行される場合は空欄になっているはずです。詳細は {{man|7|X}} を参照してください。
; WAYLAND_DISPLAY:
Wayland における {{ic|DISPLAY}} のようなものです。コンポジタによって設定されます。これが設定されていない場合、アプリケーションは {{ic|wayland-0}} を使おうと試みます。
; XAUTHORITY:
{{ic|.Xauthority}} ファイルへのパスです。このファイルには、X Window Server にアクセスするための資格情報が入っています。これは、認証のために X サーバに送られるクッキー (任意のデータ) の形で保存されます (例: {{ic|MIT-MAGIC-COOKIE-1}})。

=== システムやセッションのパス ===

; HOME:
現在のユーザのホームディレクトリへのパスが格納されます。この変数は、アプリケーションが現在のユーザに関連した設定ファイル等を見つけるために使うことができます。
; PATH:
コロンで区切られたディレクトリのリストが格納されています。システムは、この変数に登録されているディレクトリから実行ファイルを探索します。通常のコマンド (''ls''、''systemctl''、''pacman'' など) がシェル (''bash'' や ''zsh'' など) によって解釈される際、シェルは {{ic|PATH}} のリスト内のディレクトリからそのコマンドと同じ名前の実行ファイルを探索し、それを実行します。{{ic|PATH}} に含まれないディレクトリにある実行ファイルを実行するには、実行ファイルへの相対パスや絶対パスを指定する必要があります。例えば、{{ic|./a.out}} や {{ic|/bin/ls}} といった形です。
{{Note|セキュリティ上の理由により {{ic|PATH}} にはカレント作業ディレクトリ ({{ic|.}}) を含めないことが推奨されます。ユーザが騙されて、悪意のあるコマンドを実行してしまうかもしれないからです。}}
; PWD:
[[Wikipedia:ja:Pwd|作業ディレクトリへのパス]]が入ります。
; OLDPWD:
前の作業ディレクトリへのパスが入ります。つまり、最後に ''cd'' を実行する前の {{ic|PWD}} です。
; MAIL:
受信したメールの保存場所が入ります。伝統的な設定は {{ic|/var/spool/mail/$LOGNAME}} です。

=== ネットワークプロキシ ===

; ftp_proxy:
FTP [[プロキシサーバー]]が入ります。
ftp_proxy="<nowiki>ftp://192.168.0.1:21</nowiki>"
;http_proxy:
HTTP [[プロキシサーバー]]が入ります。
http_proxy="<nowiki>http://192.168.0.1:80</nowiki>"

=== ドキュメントのパス ===

; MANPATH:
''man'' が man ページを探索するディレクトリのリストがコンマで区切られて格納されます。
{{Note|{{ic|/etc/profile}} に "Man is much better than us at figuring this out" (man は我々よりずっと上手くこれを解決する) と書いてあるとおり、一般的にこの変数はデフォルトのままにしておくべきです。 {{man|5|manpath}} を参照。}}
; INFODIR:
''info'' コマンドが info ページを探索するディレクトリのリストがコンマで区切られて格納されます。例: {{ic|/usr/share/info:/usr/local/share/info}}。

=== デフォルトプログラム ===

; SHELL:
ユーザの[https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap08.html#tag_08_03 優先シェル]へのパスが含まれます。この変数の値は、現在実行中のシェルである必要はないことに注意してください。この変数に値がない場合、[[Bash]] は自動的に {{ic|/etc/passwd}} で定義されているユーザのログインシェルに設定するか、判断できない場合は {{ic|/bin/sh}} にします。
; PAGER:
ファイルの内容を一覧表示するために使用されるプログラムを実行するコマンドが含まれます。例: {{ic|/bin/less}}。
; EDITOR:
ファイルの編集に使用される軽量プログラムを実行するコマンドが含まれています (例:{{ic|/usr/bin/nano}})。例えば、以下の例のように、[[X]] 下では ''gedit'' を使い、それ以外では ''nano'' を使うように設定するインタラクティブスイッチを記述することができます:
[ -n "$DISPLAY" ] && export EDITOR=gedit || export EDITOR=nano
; VISUAL:
メールの編集などより高度な作業に使われる本格的なエディタを実行するコマンドが含まれています (例: {{ic|vi}}、[[vim]]、[[emacs]] など)。
; TERMINAL:
ユーザの優先ターミナルエミュレータを実行するコマンドが含まれます。これは、現在実行中のターミナル ({{ic|TERM}}) と同じであるとは限りません。
; BROWSER:
ウェブブラウザへのパスが含まれています。グラフィカル環境 ([[X]] など) が利用できるかに応じてこの変数を動的に変更するようなコードをインタラクティブシェルの設定ファイルに記述しておくと便利です:
[ -n "$DISPLAY" ] && export BROWSER=firefox || export BROWSER=links
{{Tip|{{ic|WAYLAND_DISPLAY}} 環境変数を使うことで、[[Wayland#コンポジタ|Wayland コンポジタ]]が実行されているかどうかに応じてこれらのデフォルトプログラムを設定することができます。}}

=== その他 ===

; TERM:
実行中のターミナル (''term''inal) の種類が格納されます (例: {{ic|xterm-256color}})。この変数は、ターミナル固有の機能を期待する、ターミナル内で実行されるプログラムによって使用されます ({{man|5|terminfo}} を参照)。この変数は、ターミナルエミュレータによって設定されるため、シェルから上書きすることは推奨されません。
; TZ:
ユーザ毎にシステムのタイムゾーンとは異なるタイムゾーンを設定するために使用することができます。{{ic|/usr/share/zoneinfo/}} 内にはタイムゾーンが列挙されているので、これをリファレンスとして使用することができます (例: {{ic|1=TZ=":/usr/share/zoneinfo/Pacific/Fiji"}})。{{ic|TZ}} 変数に zoneinfo ファイルを指定する場合、[https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html GNU マニュアル] に従ってコロンで始める必要があります。

=== シェル環境の検出 ===

シェル環境を検出するテストは、[https://gitlab.com/jdorel-documentation/shell-environment-detection シェル環境の検出に関して書かれたリポジトリ]を見てください。これには、ログイン/インタラクティブシェル、Xorg セッション、TTY、SSH セッションの検出も含まれています。


== 参照 ==
== 参照 ==


* [[Gentoo:Handbook:X86/Working/EnvVar]]
* [http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?full=1#book_part2_chap5 Gentoo Linux ドキュメント]
* [https://help.ubuntu.com/community/EnvironmentVariables Ubuntu Community Wiki - Environment Variables]
* [[デフォルトアプリケーション]]

* [[Xdg-open]]
{{TranslationStatus|Environment variables|2026-03-29|869026}}

2026年3月29日 (日) 18:32時点における最新版

環境変数は、1つ以上のアプリケーションによって使用されるデータを含む名前付きのオブジェクトです。簡単に言えば、名前と値を持つ変数です。環境変数の値には、例えばファイルシステム内のすべての実行可能ファイルの場所、使用すべきデフォルトのエディタ、またはシステムロケールの設定などが含まれます。Linux に不慣れなユーザーは、このような設定の管理方法を少し扱いづらいと感じることがよくあります。しかし、環境変数は、複数のアプリケーションやプロセス間で設定を共有する簡単な方法を提供します。

ユーティリティ

coreutils パッケージには printenv(1)env(1) というプログラムが含まれています。現在の環境変数とその値を一覧表示するには:

$ printenv
ノート 環境変数の中にはユーザ個別のものも存在します。printenv の出力を非特権ユーザの場合と root ユーザの場合で比較して確認してみましょう。

env ユーティリティを使うことで、環境変数を変更してコマンドを実行することができます。以下の例では、環境変数 EDITORvim に設定して xterm を起動します。以下のコマンドを実行しても、グローバルな EDITOR 変数には影響を与えません。

$ env EDITOR=vim xterm

シェルset(1p) 組み込みコマンドを使えば、シェルオプションの値を変更したり、位置のパラメータを設定したり、シェル変数の名前とその値を出力したりできます。

各プロセスはその環境変数を /proc/$PID/environ ファイルに保存しています。このファイルには、ヌル文字 (\x0) で区切られたキーと値のペアが含まれています。sed を使用すると、より読み易い形式で取得できます。例: sed 's:\x0:\n:g' /proc/$PID/environ

変数の定義

環境を不必要に汚染しないために、変数のスコープを制限するように努めるべきです。実際、グラフィカルセッションや systemd サービスでは、変数を有効にするために特定の場所で設定することが要求されます。環境変数のスコープは、それらが影響を与えるコンテキストに分けられます:

グローバル

シェルの初期化ファイルを使う

大半の Linux ディストリビューションは、あなたに /etc/profile 等のファイルに環境変数の追加・変更を行うよう指示します。また、/etc/locale.conf のような変数設定を含むパッケージ固有の設定ファイルがあることも覚えておいてください。環境変数の維持・管理は必ず行い、環境変数を含むことができる多数のファイルに注意を払うようにしてください。原則的に、あらゆるシェルスクリプトは環境変数の初期化に使うことができますが、以下のような UNIX の慣例に従い特定のファイルでのみ行われるべきです。

以下のファイルは、システムのグローバルな環境変数を定義するために使用できますが、それぞれに異なる制限があります:

  • /etc/environmentpam_env モジュールによって使用され、シェルに依存しないため、スクリプトやグロブ展開は使用できません。このファイルは、変数=値 という形式しか受け入れません。
  • /etc/profile は、ログインシェルのみに対して変数を初期化します。しかし、このファイルはスクリプト (例: /etc/profile.d/ 内にあるファイル) を実行し、すべての Bourne shell 互換シェルで使用することができます。
  • シェル固有の設定ファイル - シェルのグローバルな設定ファイルで、変数の初期化やスクリプトの実行を行います。例えば Bash#設定ファイル (例: ~/.bashrc)) や Zsh#スタートアップ/シャットダウン ファイル (例: ~/.zshrc) です。

以下の Bash ヘルパ関数を使えば、複数のディレクトリを PATH 環境変数に末尾追加することができます。環境変数を定義しているファイル (~/.bashrc など) の戦闘にこの関数を追加してください。この関数は、ファイルシステム上に実際に存在するディレクトリのみを追加し、重複するエントリは作成しません。

add_paths() {
  for d in "$@"; do
    [[ -d "$d" && ! "$PATH" =~ (^|:)$d(:|$) ]] && PATH="$PATH:$d"
  done
}

add_paths ~/bin ~/scripts

ほとんどのシェル (Bash、Zsh、fish を含む) では、export コマンドを使って環境に変数を追加することができます。これにより、~/my-environment.sh などのように通常のファイルで環境変数を定義することができます:

~/my-environment.sh
export EDITOR=vim
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"

このファイルは、シェルのスタートアップファイルから source することができます:

~/.bashrc
source ~/my-environment.sh
~/.config/fish/config.fish
source ~/my-environment.sh

pam_env を使う

pam_env(8) PAM モジュールは、環境変数の設定を以下のファイルから順番にロードします: /etc/security/pam_env.conf/etc/environment の順です。

ノート
  • これらのファイルは、他のファイル、特に、~/.profile~/.bash_profile~/.zshenv より前に読み込まれます。
  • 非推奨の ~/.pam_environment はもう読み込まれません。FS#68945 を参照してください。

/etc/environment では、変数= というペアを1行に1つずつ記述しなければなりません。例:

/etc/environment
EDITOR=nano

/etc/security/pam_env.conf は以下の形式で記述します:

/etc/security/pam_env.conf
VARIABLE [DEFAULT=value] [OVERRIDE=value]

@{HOME} @{SHELL} は、/etc/passwd で定義されているものに拡張される特別な変数です。次の例は、HOME 環境変数を別の変数に展開する方法を示しています:

/etc/security/pam_env.conf
XDG_CONFIG_HOME   DEFAULT=@{HOME}/.config
ノート 変数 ${HOME} および ${SHELL} は、HOME および SHELL 環境変数にはリンクされていません。これらはデフォルトでは設定されていません。

また、この形式では、${VARIABLE} を使って、既に定義されている変数を他の変数の値で展開することができます。例えば:

GOPATH DEFAULT=${XDG_DATA_HOME}/go

VARIABLE=value のペアも可能ですが、これらのペアでは変数の展開はサポートされていません。詳しくは pam_env.conf(5) を参照してください。

ユーザーごと

環境変数をグローバルに定義したくないという時もあるでしょう。例えば、PATH/home/my_user/bin を追加したいが、システム上の他のユーザーには同じ PATH を使って欲しくないという場合が考えられます。様々なファイルを使うことでローカルに環境変数を定義することができます:

ローカルで使用するディレクトリを PATH に追加するには、~/.bash_profile に次のように記述します:

export PATH="${PATH}:/home/my_user/bin"

変数をアップデートするために、再ログインするかファイルを source してください: $ source ~/.bash_profile

ノート dbus デーモンや systemd のユーザインスタンスは、~/.bashrc などのような場所で設定された環境変数を継承しません。これはつまり、dbus によってアクティブ化されたプログラム (GNOME Files など) は、そのような変数をデフォルトで使用しないことを意味します。Systemd/ユーザー#環境変数 を参照してください。
ヒント export -p を実行することで、ユーザセッションに対して宣言されたグローバルな環境変数とローカルな環境変数を見ることができます。

グラフィック環境

環境変数がグラフィカルなアプリケーションにしか影響しない場合は、グラフィカルセッション内でのみ設定することにより、その範囲を制限することができます。スコープを大きい順に並べると:

デスクトップ環境セッションごと

一部のグラフィカル環境 (例えば KDE Plasma) は、ログイン時のシェルスクリプト実行をサポートしており、環境変数の設定に利用することができます。例としては KDE#自動起動 を参照してください。

Xorg セッションごと

Xorg セッションの環境を変更する手順は、Xorg セッションの起動方法によって異なります:

スクリプトの終わりはどのファイルであるかに依存し、高度な構文は使用するシェルに依存しますが、基本的な使い方は普遍的です:

~/.xprofile, ~/.xinitrc, or ~/.xsession
...
export GUI_VAR=value
...
Wayland セッションごと

Wayland は Xorg 関連のファイルを起動しないので、GDMKDE Plasma は代わりに systemd ユーザ環境変数を読み込みます。

~/.config/environment.d/envvars.conf
GUI_VAR=value

Wayland セッションをサポートする他のディスプレイマネージャ (例: SDDM) は、まだこれを直接はサポートしていません。しかし、LightDMPlasma Login ManagerSDDM はログインシェルのスタートアップスクリプトを Wayland セッションでも読み込みます。

greetd/etc/profile および ~/.profile を読み込みます。この動作は、デフォルトで有効になっている source_profile 設定によって制御されます。

~/.bash_profile などのスタートアップスクリプトを読み込むディスプレイマネージャを使用していて、environment.d を使用したい場合、以下のように読み込むことができます:

~/.bash_profile
# systemd-environment-d-generator(8) を使用して環境を生成し、その変数をエクスポートする
set -o allexport
source <(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)
set +o allexport
ノート /usr/lib/systemd/user-environment-generators にある他のジェネレーター、例えば 60-flatpak は環境変数の値を引用符で囲まない場合があります。この場合、出力は export -- "$(/usr/lib/systemd/user-environment-generators/60-flatpak)" を使用して読み込む必要があります。
アプリケーションごと

セッション全体ではなく、特定のアプリケーションにのみ環境変数を設定するには、そのアプリケーションの .desktop ファイルを編集してください。その方法は デスクトップエントリ#環境変数の変更 を参照してください。

Steam ゲームでは、起動オプションを編集することでプログラムの環境を設定することができます。Steam#起動オプション を参照してください。

セッションまたはシェルごと

時として、一時的な変数のみが必要である場合もあります。特定のディレクトリ内の実行ファイルを実行する際に一時的に絶対パスを入力する手間を省きたい場合や、一時的な短いシェルスクリプトでそのパスを使用したい場合があるでしょう。

例えば、セッション固有のディレクトリを PATH に追加するには:

$ export PATH="${PATH}:/home/my_user/tmp/usr/bin"

シェル固有のディレクトリのみを PATH に追加するには:

$ PATH="${PATH}:/home/my_user/tmp/usr/bin"

Bash では、PATH は既にデフォルトで export されているので、上記のどちらの方法を用いても、変数を上書きしない限り、変数の変更がサブプロセスから見えてしまいます。export された変数とされていない変数の違いをよりわかりやすく比較するには、以下を実行してみてください:

$ MYVAR="shell-only"
$ bash -c 'echo $MYVAR'  # 何も表示されない

$ export MYVAR="session-wide"
$ bash -c 'echo $MYVAR'  # 表示される。すなわち、セッション全体に反映されている

以下のセクションでは Linux システムで一般的に使われている環境変数を並べており、それぞれの値について説明しています。

デスクトップ環境の検出

XDG_CURRENT_DESKTOP

コロンで区切られた文字列リストを含む freedesktop.org 変数。現在のデスクトップ環境を示します[4]。活発に開発されているデスクトップ環境の標準化された値として次があります: GNOMEGNOME-FlashbackKDELXDELXQtMATETDEUnityXFCEEDECinnamonPantheonDDE [5]

ヒント
  • Cinnamon は、他のデスクトップ環境より後に登録されました。そのため、Qt[6] など一部のソフトウェアは、登録前の値である X-CINNAMON を期待します。
  • Hyprland は、Hyprland 用として非公式に認められています。
XDG_SESSION_DESKTOP

XDG_CURRENT_DESKTOP と似ていますが、単一の文字列しか許可しません。その名前にも関わらず、これは freedesktop.org によって標準化されたものではありません

DE

使用中のデスクトップ環境 (desktop environment) を示すレガシーな変数です。どのような値を取りうるかについての中心的なドキュメントはありませんが、xdg-utils は多くのデスクトップ環境についてのリファレンスを提供しています。

DESKTOP_SESSION

これもレガシーな変数です。DE に似ていますが、それよりは一般的ではありません。セッションの (/usr/share/xsessions/ 内の) デスクトップエントリへのパスを格納できます [7]

WINDOW_MANAGER

デスクトップ環境で使用するウィンドウマネージャ選択するために時々使われる変数です。他のプログラムが読み取るために、既に選択されているディスプレイマネージャやデスクトップ環境によって設定される他の変数とは対照的です。

DISPLAY

ホスト、ディスプレイ、スクリーンを指定するために X Window System によって使用されます。形式は ホスト名:ディスプレイ.スクリーン です。ディスプレイとは、共通の入力デバイス群 (キーボードやマウスなど) を共有するスクリーンの集まりを指します。ホスト名は、ディスプレイが接続されるマシンの名前を指定するためにかつて使用されていましたが、X クライアントと同じコンピュータ上で X サーバが実行される場合は空欄になっているはずです。詳細は X(7) を参照してください。

WAYLAND_DISPLAY

Wayland における DISPLAY のようなものです。コンポジタによって設定されます。これが設定されていない場合、アプリケーションは wayland-0 を使おうと試みます。

XAUTHORITY

.Xauthority ファイルへのパスです。このファイルには、X Window Server にアクセスするための資格情報が入っています。これは、認証のために X サーバに送られるクッキー (任意のデータ) の形で保存されます (例: MIT-MAGIC-COOKIE-1)。

システムやセッションのパス

HOME

現在のユーザのホームディレクトリへのパスが格納されます。この変数は、アプリケーションが現在のユーザに関連した設定ファイル等を見つけるために使うことができます。

PATH

コロンで区切られたディレクトリのリストが格納されています。システムは、この変数に登録されているディレクトリから実行ファイルを探索します。通常のコマンド (lssystemctlpacman など) がシェル (bashzsh など) によって解釈される際、シェルは PATH のリスト内のディレクトリからそのコマンドと同じ名前の実行ファイルを探索し、それを実行します。PATH に含まれないディレクトリにある実行ファイルを実行するには、実行ファイルへの相対パスや絶対パスを指定する必要があります。例えば、./a.out/bin/ls といった形です。

ノート セキュリティ上の理由により PATH にはカレント作業ディレクトリ (.) を含めないことが推奨されます。ユーザが騙されて、悪意のあるコマンドを実行してしまうかもしれないからです。
PWD

作業ディレクトリへのパスが入ります。

OLDPWD

前の作業ディレクトリへのパスが入ります。つまり、最後に cd を実行する前の PWD です。

MAIL

受信したメールの保存場所が入ります。伝統的な設定は /var/spool/mail/$LOGNAME です。

ネットワークプロキシ

ftp_proxy

FTP プロキシサーバーが入ります。

ftp_proxy="ftp://192.168.0.1:21"
http_proxy

HTTP プロキシサーバーが入ります。

http_proxy="http://192.168.0.1:80"

ドキュメントのパス

MANPATH

man が man ページを探索するディレクトリのリストがコンマで区切られて格納されます。

ノート /etc/profile に "Man is much better than us at figuring this out" (man は我々よりずっと上手くこれを解決する) と書いてあるとおり、一般的にこの変数はデフォルトのままにしておくべきです。 manpath(5) を参照。
INFODIR

info コマンドが info ページを探索するディレクトリのリストがコンマで区切られて格納されます。例: /usr/share/info:/usr/local/share/info

デフォルトプログラム

SHELL

ユーザの優先シェルへのパスが含まれます。この変数の値は、現在実行中のシェルである必要はないことに注意してください。この変数に値がない場合、Bash は自動的に /etc/passwd で定義されているユーザのログインシェルに設定するか、判断できない場合は /bin/sh にします。

PAGER

ファイルの内容を一覧表示するために使用されるプログラムを実行するコマンドが含まれます。例: /bin/less

EDITOR

ファイルの編集に使用される軽量プログラムを実行するコマンドが含まれています (例:/usr/bin/nano)。例えば、以下の例のように、X 下では gedit を使い、それ以外では nano を使うように設定するインタラクティブスイッチを記述することができます:

[ -n "$DISPLAY" ] && export EDITOR=gedit || export EDITOR=nano
VISUAL

メールの編集などより高度な作業に使われる本格的なエディタを実行するコマンドが含まれています (例: vivimemacs など)。

TERMINAL

ユーザの優先ターミナルエミュレータを実行するコマンドが含まれます。これは、現在実行中のターミナル (TERM) と同じであるとは限りません。

BROWSER

ウェブブラウザへのパスが含まれています。グラフィカル環境 (X など) が利用できるかに応じてこの変数を動的に変更するようなコードをインタラクティブシェルの設定ファイルに記述しておくと便利です:

[ -n "$DISPLAY" ] && export BROWSER=firefox || export BROWSER=links
ヒント WAYLAND_DISPLAY 環境変数を使うことで、Wayland コンポジタが実行されているかどうかに応じてこれらのデフォルトプログラムを設定することができます。

その他

TERM

実行中のターミナル (terminal) の種類が格納されます (例: xterm-256color)。この変数は、ターミナル固有の機能を期待する、ターミナル内で実行されるプログラムによって使用されます (terminfo(5) を参照)。この変数は、ターミナルエミュレータによって設定されるため、シェルから上書きすることは推奨されません。

TZ

ユーザ毎にシステムのタイムゾーンとは異なるタイムゾーンを設定するために使用することができます。/usr/share/zoneinfo/ 内にはタイムゾーンが列挙されているので、これをリファレンスとして使用することができます (例: TZ=":/usr/share/zoneinfo/Pacific/Fiji")。TZ 変数に zoneinfo ファイルを指定する場合、GNU マニュアル に従ってコロンで始める必要があります。

シェル環境の検出

シェル環境を検出するテストは、シェル環境の検出に関して書かれたリポジトリを見てください。これには、ログイン/インタラクティブシェル、Xorg セッション、TTY、SSH セッションの検出も含まれています。

参照

翻訳ステータス: このページは en:Environment variables の翻訳バージョンです。最後の翻訳日は 2026-03-29 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。