コンテンツにスキップ

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

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


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


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


$ printenv
$ printenv


{{Note|環境変数の中にはユーザ個別のものも存在します。''printenv'' の出力を非特権ユーザの場合と ''root'' ユーザの場合で比較して確認してください。}}
{{Note|環境変数の中にはユーザ個別のものも存在します。{{ic|printenv}} の出力を非特権ユーザの場合と root ユーザの場合で比較して確認してみましょう。}}


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


* [[#グローバル|グローバル]]: あらゆるユーザが実行する全プログラム。Systemd サービスは含まれません。
* [[#グローバル|グローバル]]: あらゆるユーザが実行する全プログラム。Systemd サービスは含まれません。
* [[#ユーザーごと|ユーザ別]]: 特定のユーザが実行する全プログラム。Systemd ユーザサービス ([[Systemd/ユーザー#環境変数]] を参照) やグラフィカルアプリケーション ([[#グラフィック環境]] を参照) は含まれません。
* [[#ユーザーごと|ユーザ別]]: 特定のユーザが実行する全プログラム。Systemd ユーザサービス ([[systemd/ユーザー#環境変数]] を参照) やグラフィカルアプリケーション ([[#グラフィック環境]] を参照) は含まれません。


=== グローバル ===
=== グローバル ===
47行目: 48行目:
* シェル固有の設定ファイル - [[シェル]]のグローバルな設定ファイルで、変数の初期化やスクリプトの実行を行います。例えば [[Bash#設定ファイル]] (例: {{ic|~/.bashrc}})) や [[Zsh#スタートアップ/シャットダウン ファイル]] (例: {{ic|~/.zshrc}}) です。
* シェル固有の設定ファイル - [[シェル]]のグローバルな設定ファイルで、変数の初期化やスクリプトの実行を行います。例えば [[Bash#設定ファイル]] (例: {{ic|~/.bashrc}})) や [[Zsh#スタートアップ/シャットダウン ファイル]] (例: {{ic|~/.zshrc}}) です。


以下の例では、複数のディレクトリ (例えば {{ic|~/bin}} と {{ic|~/scripts}}) それぞれのユーザーの {{ic|PATH}} に追加する関数を作成しています。これを行うには、以下を任意のグローバル環境変数の設定ファイル ({{ic|/etc/profile}} または {{ic|/etc/bash.bashrc}}) に記述するだけで:
以下の Bash ヘルパ関数を使えば、複数のディレクトリを {{ic|PATH}} 環境変数末尾追加することができます。環境変数義しているファイル ({{ic|~/.bashrc}} など) の戦闘この関数を追加してください。この関数は、ファイルシステム上に実際に存在するディレクトリのみを追加し、重複るエントリは作成しません。


{{bc|<nowiki>
{{bc|<nowiki>
set_path(){
add_paths() {
for d in "$@"; do

[[ -d "$d" && ! "$PATH" =~ (^|:)$d(:|$) ]] && PATH="$PATH:$d"
# ユーザ ID が 1000 以上であるか確認する
done
[ "$(id -u)" -ge 1000 ] || return

for i in "$@";
do
# ディレクトリが存在するか確認する
[ -d "$i" ] || continue

# ディレクトリが $PATH に既に存在するか確認する
echo "$PATH" | grep -Eq "(^|:)$i(:|$)" && continue

# ディレクトリを $PATH の末尾に追加し、export する
export PATH="${PATH}:$i"
done
}
}


set_path ~/bin ~/scripts
add_paths ~/bin ~/scripts
</nowiki>}}
</nowiki>}}


ほとんどのシェル (Bash、Zsh、[[fish]] を含む) では、{{ic|export}} コマンドを使って環境に変数を追加することができます。これにより、{{ic|~/my-environment.sh}} などのように通常のファイルで環境変数を定義することができます:
異なるシェル間で環境変数を共有する1つの方法として、{{ic|envsubst}} によって直接読み込むことのできるファイルを、'''コメント、空行、スペース (bash) を含めずに'''、作成するというものがあります ([https://unix.stackexchange.com/questions/176322/share-environment-variables-between-bash-and-fish] から着想を得ました):


{{hc|.env|2=
{{hc|~/my-environment.sh|2=
EDITOR=vim
export EDITOR=vim
XDG_CACHE_HOME=$HOME/.cache
export XDG_CACHE_HOME="$HOME/.cache"
XDG_CONFIG_HOME=$HOME/.config
export XDG_CONFIG_HOME="$HOME/.config"
XDG_DATA_HOME=$HOME/.local/share
export XDG_DATA_HOME="$HOME/.local/share"
XDG_STATE_HOME=$HOME/.local/state
export XDG_STATE_HOME="$HOME/.local/state"
}}
}}


このファイルは、シェルのスタートアップファイルから source することができます:
{{hc|bashrc|export $(envsubst < .env)}}


{{hc|~/.bashrc|source ~/my-environment.sh}}
{{hc|config/fish/config.fish|export (envsubst < .env)}}
{{hc|~/.config/fish/config.fish|source ~/my-environment.sh}}


==== pam_env を使う ====
==== pam_env を使う ====
96行目: 86行目:
{{ic|/etc/environment}} では、{{ic|1=''変数''=''値''}} というペアを1行に1つずつ記述しなければなりません。例:
{{ic|/etc/environment}} では、{{ic|1=''変数''=''値''}} というペアを1行に1つずつ記述しなければなりません。例:


{{hc|/etc/environment|2=
EDITOR=nano
EDITOR=nano
}}


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


{{hc|/etc/security/pam_env.conf|2=
VARIABLE [DEFAULT=''value''] [OVERRIDE=''value'']
VARIABLE [DEFAULT=''value''] [OVERRIDE=''value'']
}}


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


{{hc|/etc/security/pam_env.conf|2=
XDG_CONFIG_HOME DEFAULT=@{HOME}/.config
XDG_CONFIG_HOME DEFAULT=@{HOME}/.config
}}


{{Note|変数 {{ic|${HOME} }} および {{ic|${SHELL} }} は、{{ic|HOME}} および {{ic|SHELL}} 環境変数にはリンクされていません。これらはデフォルトでは設定されていません。}}
{{Note|変数 {{ic|${HOME} }} および {{ic|${SHELL} }} は、{{ic|HOME}} および {{ic|SHELL}} 環境変数にはリンクされていません。これらはデフォルトでは設定されていません。}}
150行目: 146行目:
* [[startx]] と [[SLiM]] は [[xinitrc]] を実行します。
* [[startx]] と [[SLiM]] は [[xinitrc]] を実行します。
* [[XDM]] は {{ic|~/.xsession}} を実行します: [[XDM#セッションの定義]] を参照して下さい。
* [[XDM]] は {{ic|~/.xsession}} を実行します: [[XDM#セッションの定義]] を参照して下さい。
* [[SDDM]] は、追加でログインシェルのスタートアップスクリプト ([[Bash]] の場合は {{ic|~/.bash_profile}}、[[Zsh]] の場合は {{ic|~/.zlogin}}) も読み込みます。[https://github.com/sddm/sddm/blob/master/data/scripts/Xsession]
* [[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}} す。


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


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


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


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


{{hc|~/.bash_profile|
{{hc|~/.bash_profile|
# systemd-environment-d-generator(8) を使て環境を生成し、変数を export する
# systemd-environment-d-generator(8) を使用して環境を生成し、その変数をエクスポートする
set -o allexport
export $(run-parts /usr/lib/systemd/user-environment-generators {{!}} xargs)
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)"}} を使用して読み込む必要があります。}}

{{Note|上記のコードは {{ic|/usr/lib/systemd/user-environment-generators}} 内の全ての実行ファイルを実行します。これは、望ましくない場合があります。代わりに {{ic|/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator}} を直接実行することもできます。}}


===== アプリケーションごと =====
===== アプリケーションごと =====
189行目: 186行目:
=== セッションまたはシェルごと ===
=== セッションまたはシェルごと ===


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


例えば、現在のシェルに {{ic|PATH}} 変数を定義できますし、あるいは ''export'' コマンドを使えばセッションからログアウトするまで全てのシェルで有効な {{ic|PATH}} 変数を定義することもできます。セッション固有のディレクトリを {{ic|PATH}} に追加するには、以下を実行してください:
例えば、セッション固有のディレクトリを {{ic|PATH}} に追加するには:


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


シェル固有のディレクトリだけを {{ic|PATH}} に追加するには、以下を実行してください:
シェル固有のディレクトリのみを {{ic|PATH}} に追加するには:

$ PATH="${PATH}:/home/my_user/tmp/usr/bin"
$ 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' # 表示される。すなわち、セッション全体に反映されている


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


=== デスクトップ環境の検出 ===
* {{ic|XDG_CURRENT_DESKTOP}} は [[freedesktop.org]] の変数であり、現在の[[デスクトップ環境]]を識別する文字列のリストをコロンで区切って格納しています [https://specifications.freedesktop.org/mime-apps-spec/1.0.1/ar01s02.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/apb.html]。
** [https://bugs.freedesktop.org/show_bug.cgi?id=73497 Cinnamon は他のデスクトップ環境より遅れて登録されました]。そのため、まだ登録前の値 {{ic|X-CINNAMON}} を期待するソフトウェアがあるかもしれません (最近の [[Qt]] バージョン 6.3 など) [https://github.com/qt/qtbase/blob/6.3/src/gui/platform/unix/qgenericunixthemes.cpp#L858]。


; XDG_CURRENT_DESKTOP:
* {{ic|XDG_SESSION_DESKTOP}} は {{ic|XDG_CURRENT_DESKTOP}} に似ていますが、単一の文字列しか許可しません。その名前にもかかわらず、[https://gitlab.gnome.org/GNOME/gtk/-/issues/1224#note_270915 これは freedesktop.org によって標準化されていません]。
コロンで区切られた文字列リストを含む [[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|
* {{ic|DE}} は使用中のデスクトップ環境 (''d''esktop ''e''nvironment) を示すレガシー変数です。どのような値を取りうるかについての中心的なドキュメントはありませんが、[[xdg-utils#環境変数|xdg-utils]] は多くのデスクトップ環境についてのリファレンスを提供しています。
* 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]] 用として非公式に認められています。
* {{ic|DESKTOP_SESSION}} もレガシーな変数です。{{ic|DE}} に似ていますが、より一般的ではありません。セッションの ({{ic|/usr/share/xsessions/}} 内の) [[デスクトップエントリ]]へのパスを格納できます [https://github.com/qt/qtbase/blob/6.3/src/gui/platform/unix/qgenericunixservices.cpp#L92-L107]。
}}

; XDG_SESSION_DESKTOP:
* {{ic|WINDOW_MANAGER}} は、デスクトップ環境で使用する[[ウィンドウマネージャ]]を''選択''するために時々使われる変数です。他のプログラムが読み取るために、既に選択されているディスプレイマネージャやデスクトップ環境によって設定される他の変数とは対照的です。
{{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}})。


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


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


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


; ftp_proxy:
* {{ic|PWD}} には[[Wikipedia:ja:Pwd|作業ディレクトリへのパス]]が入ります。
FTP [[プロキシサーバー]]が入ります。

* {{ic|OLDPWD}} には前のワーキングディレクトリへのパスが入ります。つまり最後に ''cd'' を実行する前の {{ic|PWD}} です。

* {{ic|TERM}} には、実行中のターミナル (''term''inal) の種類が格納されます (例: {{ic|xterm-256color}})。この変数は、ターミナル固有の機能を期待する、ターミナル内で実行されるプログラムによって使用されます。

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

* {{ic|ftp_proxy}} と {{ic|http_proxy}} にはそれぞれ FTP と HTTP プロキシサーバーを記述します:
ftp_proxy="<nowiki>ftp://192.168.0.1:21</nowiki>"
ftp_proxy="<nowiki>ftp://192.168.0.1:21</nowiki>"
;http_proxy:
HTTP [[プロキシサーバー]]が入ります。
http_proxy="<nowiki>http://192.168.0.1:80</nowiki>"
http_proxy="<nowiki>http://192.168.0.1:80</nowiki>"


=== ドキュメントのパス ===
* {{ic|MANPATH}} には、''man'' が man ページを探索するディレクトリのリストがコンマで区切られて格納されます。


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

* {{ic|INFODIR}} には、''info'' コマンドが info ページを探索するディレクトリのリストがコンマで区切られて格納されます。例: {{ic|/usr/share/info:/usr/local/share/info}}。
''info'' コマンドが info ページを探索するディレクトリのリストがコンマで区切られて格納されます。例: {{ic|/usr/share/info:/usr/local/share/info}}。

* {{ic|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 マニュアル] に従ってコロンで始める必要があります。


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


; SHELL:
* {{ic|SHELL}} にはユーザの[https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 優先シェル]へのパスが含まれます。この変数の値は、現在実行中のシェルである必要はないことに注意してください。この変数に値がない場合、[[Bash]] は自動的に {{ic|/etc/passwd}} で定義されているユーザのログインシェルに設定するか、判断できない場合は {{ic|/bin/sh}} にします。
ユーザの[https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap08.html#tag_08_03 優先シェル]へのパスが含まれます。この変数の値は、現在実行中のシェルである必要はないことに注意してください。この変数に値がない場合、[[Bash]] は自動的に {{ic|/etc/passwd}} で定義されているユーザのログインシェルに設定するか、判断できない場合は {{ic|/bin/sh}} にします。

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

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

[ -n "$DISPLAY" ] && export EDITOR=gedit || export EDITOR=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 コンポジタ]]が実行されているかどうかに応じてこれらのデフォルトプログラムを設定することができます。}}


=== その他 ===
* {{ic|VISUAL}} には、メールの編集などより高度な作業に使われる本格的なエディタを実行するコマンドが含まれています (例: {{ic|vi}}、[[vim]]、[[emacs]] など)。


; TERM:
* {{ic|BROWSER}} にはウェブブラウザへのパスが含まれています。グラフィカル環境 ([[X]] など) が利用できるかに応じてこの変数を動的に変更するようなコードをインタラクティブシェルの設定ファイルに記述しておくと便利です:
実行中のターミナル (''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 マニュアル] に従ってコロンで始める必要があります。


=== シェル環境の検出 ===
[ -n "$DISPLAY" ] && export BROWSER=firefox || export BROWSER=links


シェル環境を検出するテストは、[https://gitlab.com/jdorel-documentation/shell-environment-detection シェル環境の検出に関して書かれたリポジトリ]を見てください。これには、ログイン/インタラクティブシェル、Xorg セッション、TTY、SSH セッションの検出も含まれています。
{{Tip|{{ic|WAYLAND_DISPLAY}} 環境変数を使うことで、[[Wayland#コンポジタ|Wayland コンポジタ]]が実行されているかどうかに応じてこれらのデフォルトプログラムを設定することができます。}}


== 参照 ==
== 参照 ==
262行目: 296行目:
* [https://help.ubuntu.com/community/EnvironmentVariables Ubuntu Community Wiki - Environment Variables]
* [https://help.ubuntu.com/community/EnvironmentVariables Ubuntu Community Wiki - Environment Variables]


{{TranslationStatus|Environment variables|2023-06-04|779961}}
{{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 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。