Linuxで環境変数を設定したいです。
そういった疑問に現役エンジニアの筆者が答えます。
また環境変数の削除や確認や定義や代入まで見ていきます。
筆者はWindowsサーバーやLinuxサーバーの運用構築を11年間以上おこなってきました。その経験を元に知識を公開していきます!
この記事を読めばLinuxサーバーで、環境変数の設定や削除について理解する事ができます。
Linuxサーバーで環境変数を設定する方法
Linuxサーバーで環境変数を設定するやり方は以下の通りです。
シェル変数=シェル変数の値
set
export シェル変数
env
printenv
シェル変数は設定されたシェルのみ使用する変数です。子プロセスには引き継がれません。
環境変数は設定されたシェルと、そのシェルで起動されたプログラムが使用する変数です。子プロセスに引継ぎされます。
シェル変数を設定してその変数をエクスポートする事で、環境変数を設定します。
Linuxサーバーで環境変数を削除する方法
Linuxサーバーでシェル変数を削除するコマンドは「unset」コマンドです。
unset 環境変数
このコマンドでシェル変数が削除され、自動的に環境変数も削除する事ができます。
シェル変数は残して環境変数のみ削除するにはexportコマンドにnオプションをつけることで可能になります。
export -n 環境変数
Linuxサーバーで環境変数を参照する方法
Linuxサーバーで環境変数を参照するには、環境変数の前に「$」を付けます。
$環境変数
これで環境変数を参照する事が可能です。
初期からあるよく使用する環境変数とは
元々設定してあるシェル変数があり、それをエクスポートしている環境変数があります。
変数名 | 説明 |
---|---|
LANG | 言語情報が定義 |
HOME | ユーザーのホームディレクトリを格納 |
PATH | コマンドの検索するパスを定義 |
実践:Linuxサーバーで環境変数を設定や削除する方法
Linuxサーバーで環境変数を設定する
では実際に環境変数を設定してみます。
OS=Linux
OSというシェル変数に「Linux」という値を入れてみました。
setコマンドとgrepで確認してみます。
[root@localhost ~]# set | grep OS
HOSTNAME=localhost.localdomain
HOSTTYPE=x86_64
OS=Linux
OSTYPE=linux-gnu
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
いくつか表示されましたが、OSのシェル変数が追加されています。
環境変数にあるか確認します。
envコマンドだと全ての環境変数が表示されるので、printenvコマンドで変数を指定しましょう!
[root@localhost ~]# printenv OS
[root@localhost ~]#
何も表示されていないので、環境変数には設定されていません。
ではexportコマンドで環境変数の設定を行います。
export OS
これでOSという環境変数が設定されました。先程のprintenvコマンドで確認します。
[root@localhost ~]# printenv OS
Linux
指定した環境変数の値が表示されています。
Linuxサーバーで環境変数を1コマンドで設定する
一気に環境変数を設定する事も可能です。
export 環境変数=環境変数の値
実際に環境変数を1コマンドで設定してみます。
export NAME=mike
printenvコマンドで確認します。
[root@localhost ~]# printenv NAME
mike
1コマンドで環境変数が設定できました。
Linuxサーバーで環境変数を参照する
先程使用した環境変数を参照してみます。
[root@localhost ~]# echo $OS
Linux
[root@localhost ~]# echo $NAME
mike
環境変数の前に「$」を付ける事で参照できています。
Linuxサーバーで環境変数を削除する
先程使用したシェル変数をunsetコマンドで削除してみます。
unset NAME
削除されたか確認してみます。
[root@localhost ~]# set | grep -x NAME=mike
[root@localhost ~]#
シェル変数は削除されました。当然環境変数も削除されたはずです。確認してみます。
[root@localhost ~]# printenv NAME
[root@localhost ~]#
環境変数が削除されました。
exportコマンドにnオプションをつけて環境変数を削除してみます。
[root@localhost ~]# export -n NAME
[root@localhost ~]# set | grep -x NAME=mike
NAME=mike
[root@localhost ~]# printenv NAME
[root@localhost ~]#
シェル変数は表示されますが、環境変数は表示されません。
コマンド「export -n」では環境変数のみが削除されました。
ログイン時に環境変数を設定するには
折角作成した環境変数はログアウトすれば消えてしまいます。
毎回使用する環境変数はログインする時に読み込む設定をすれば、効率が良いです。
設定するファイルは「~/.bash_profile」です。
現在のファイルの内容を表示してみます。
[root@localhost ~]# cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
このファイルにviエディタで追記していきます。
export OS=Linux
上の一文を最後の行に追記して、保存してviエディタを終了します。
先程の確認コマンドで確認してみます。
[root@localhost ~]# printenv OS
[root@localhost ~]#
ファイルに設定しても即座に反映されません。ログインし直すか、「~/.bash_profile」ファイルを実行すれば反映します。
ファイルを実行してみます。
. ~/.bash_profile
これで「~/.bash_profile」ファイルを実行しました。もう一度確認してみます。
[root@localhost ~]# printenv OS
Linux
環境変数が反映されています。もちろんログインし直しても参照可能です。
まとめ:Linuxの環境変数を設定や削除する方法
Linuxサーバーで環境変数を設定するコマンドは以下の通り。
環境変数=環境変数の値
export 環境変数
環境変数を一気に設定するコマンドは以下の通り。
export 環境変数=環境変数の値
Linuxサーバーでシェル変数と環境変数を削除するコマンドは「unset」コマンドです。
unset 環境変数
Linuxサーバーで環境変数のみ削除するコマンドは「export -n」コマンドです。
export -n 環境変数
Linuxサーバーで環境変数を参照するには、環境変数の前に「$」を付けます。
$環境変数
毎回使用する環境変数はログインする時に読み込む設定をすれば、効率が良いです。
設定するファイルは「~/.bash_profile」で環境変数を設定するコマンドを追記する。
反映させるにはログインし直すか、「~/.bash_profile」を実行する。