Overview
このチュートリアルでは、Ubuntu、CentOS、Red Hat など、基本的にどの Linux ディストリビューションでも、1 人のユーザーやすべてのユーザーに対して環境変数を設定する方法を学びます。
環境変数は、Bash シェルでよく使われます。 また、サービスを設定したり、Webアプリケーションのシークレットを処理するための一般的な手段でもあります。
例えば、エンドポイントやパスワードなどの環境固有の情報が、サーバー上の環境変数として保存されていることも珍しくありません。
環境変数の設定
環境変数を設定するには、exportコマンドを使用します。
export NAME=VALUE
例えば、手動でインストールした OpenJDK 11 のホーム ディレクトリに環境変数を設定するには、次のようにします。
export JAVA_HOME=/opt/openjdk11
環境変数の値をシェルから出力するには、echo コマンドを使用し、変数名の前にドル ($) 記号を付けます。
echo $JAVA_HOME
そして、変数に値がある限り、それはエコー出力されます。
環境変数の設定解除
環境変数の設定を解除し、その存在を完全に排除するには、unsetコマンドを使用します。 環境変数を空の文字列に置き換えるだけでは削除されず、ほとんどの場合、有効な値を期待するスクリプトやアプリケーションで問題が発生する可能性があります。
環境変数の設定解除には、次のような構文を使用します
unset VARIABLE_NAME
例えば、JAVA_HOME環境変数の設定を解除するには、次のようなコマンドを使用します。
unset JAVA_HOME
設定されているすべての環境変数の一覧表示
すべての環境変数を一覧表示するには、引数を指定せずに set コマンドを使用します。
BASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=(="0") BASH_ARGV=() BASH_CMDS=() BASH_COMPLETION_VERSINFO=(="2" ="8") BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=(="5" ="0" ="3" ="1" ="release" ="x86_64-pc-linux-gnu") BASH_VERSION='5.0.3(1)-release' COLUMNS=208 DIRSTACK=() EUID=1000 GROUPS=() HISTCONTROL=ignoreboth HISTFILE=/home/ubuntu/.bash_history HISTFILESIZE=2000 HISTSIZE=1000 HOME=/home/ubuntu HOSTNAME=ubuntu1904 HOSTTYPE=x86_64 IFS=$' \t\n' LANG=en_US.UTF-8 LESSCLOSE='/usr/bin/lesspipe %s %s' LESSOPEN='| /usr/bin/lesspipe %s' LINES=54
Persisting Environment Variables for a User
シェルから export コマンドを使用して環境変数を設定すると、ユーザーのセッションが終了した時点で環境変数の存在が終了します。
あるユーザーの環境に対して環境変数を永続化するには、そのユーザーのプロファイル スクリプトから変数をエクスポートします。
- 現在のユーザーのプロファイルをテキスト エディターで開きます
vi ~/.bash_profile
- 永続化させたい環境変数ごとに export コマンドを追加します。
export JAVA_HOME=/opt/openjdk11
- 変更を保存します。
ユーザーのbashプロファイルに環境変数を追加しただけでは、自動的にエクスポートされません。
bash_profileへのすべての変更を直ちに適用するには、sourceコマンドを使用します。
source ~/.bash_profile
環境変数のエクスポート
エクスポートはBashのビルトインシェルコマンドで、環境変数をエクスポートして新しい子プロセスに継承させるために使用されます。
export MYVAR="my variable value"
exportコマンドを引数なしで実行すると、エクスポートされた環境変数の全リストを見ることができます。
export
SHELL=/bin/zshSHLVL=1SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.1pB5Pry8Id/ListenersTERM=xterm-256colorTERM_PROGRAM=vscodeTERM_PROGRAM_VERSION=1.48.2
現在のシェルでエクスポートされたすべての変数を表示するには、 export に -p
フラグを使用します。
export -p
全ユーザーに永続的なグローバル環境変数を設定する
再起動後も持続する永続的な環境変数は、デフォルトのプロファイルに追加することで作成できます。 このプロファイルは、サービス アカウントを含む、システム上のすべてのユーザーによって読み込まれます。
すべてのグローバル プロファイル設定は、/etc/profile に保存されます。 また、このファイルはディレクトリを編集することができますが、実際には、グローバル環境変数を/etc/profile.dというディレクトリに保存することをお勧めします。
- グローバル環境変数を保存するために、/etc/profile.dの下に新しいファイルを作成します。 ファイルの名前は、他の人がその目的を理解できるように、文脈に沿ったものにします。
sudo touch /etc/profile.d/http_proxy.sh
- デフォルトのプロファイルをテキストエディタで開きます。
sudo vi /etc/profile.d/http_proxy.sh
- 環境変数をエクスポートするために新しい行を追加します
export HTTP_PROXY=http://my.proxy:8080
export HTTPS_PROXY=https://my.proxy:8080
export NO_PROXY=localhost,::1,.example.com
。
- 変更を保存して、テキストエディターを終了します
結論
このチュートリアルでは、DebianからRed Hatまで、すべてのLinuxディストリビューションについて、環境変数を設定および解除する方法を説明しました。 Debian から Red Hat まで、すべての Linux ディストリビューションの環境変数を設定および解除する方法を説明しました。 また、すべてのユーザーだけでなく、1人のユーザーに対して環境変数を設定する方法も学びました
。