(1) Linuxで環境変数を永続化させる方法と手順について
(1-1) 実現方法
(1-2) 設定手順
(1) Linuxで環境変数を永続化させる方法と手順について
Linuxにおいて、TeraTermやPuttyでログインして操作する際、環境変数を永続的に設定するための方法についてご紹介します。
(1-1) 実現方法
ポイントとして「ログインシェル」や「非ログインシェル」にOSにログインした際に自動で環境変数をセットするように仕掛けていきます。ログインシェルというのは、OSユーザのログイン時に、起動される「シェル」です(⇒ログインシェルや非ログインシェルとは?)
本記事ではシェルの中でも「bash」を例にご紹介していきます(※余談ですが、シェルにはbash以外にもDash、csh、ksh、zshなど色々と種類があります。
(1-1-1) 起動ファイルの順序について
(a)ログインシェルの場合
①/etc/profile
②~/.bash_profile
③~/.bash_login
④~/.profile
(表)
①/etc/profile | ・bashがログインシェルとして起動された際、最初に読み込まれる設定ファイルです。 ・全ユーザに適用されます(グローバル設定) ・export [環境変数名]=[値]で表現します(スクリプトのため、先頭にexportの追記が必要) ・以降のファイルを②⇒③⇒④の順番で読み込んでいきます。 |
②~/.bash_profile | ・「/etc/profile」から1番目に読み込まれるファイルです。 ・特定ユーザに適用されます(「~/」配下のため) ・経緯として、シェル「ksh」の「.profile」の名前を借りて、bash用にしたもの。「ksh」から「bash」に移行する際などに使われるようです。 |
③~/.bash_login | ・上記が存在しない場合、「/etc/profile」から2番目に読み込まれるファイルです。 ・特定ユーザに適用されます(「~/」配下のため) ・経緯として、シェル「csh」の「.login」の名前を借りて、bash用にしたもの。「csh」から「bash」に移行する際などに使われるようです。 |
④~/.profile | ・上記が存在しない場合、「/etc/profile」から3番目に読み込まれるファイルです。 ・特定ユーザに適用されます(「~/」配下のため) ・②③と異なり、sh等の別のシェルからでも読み込まれます。 |
(補足1)
表を見ると「.bash_profile」や「.bash_login」間には機能的な差異はないですが、他のシェルからbashへ移行する際の「移行元(kshやcsh)」の名前を受け継いでいるため、別々のファイルになっているという経緯があるようです。
(b)非ログインシェルの場合
非ログインシェルの場合は、「~/.bashrc」の設定を読み込みます。
①~/.bashrc
(c)非対話型 非ログインシェル
非対話型の非ログインシェルの場合、「$BASH_ENV」環境変数に設定された情報を読み込みます。
$BASH_ENV
(1-2) 設定手順
今回の例として、TeraTermでの日本語の文字化けを修正するために「LANG」環境変数をセットする例で説明を進めたいと思います。Beforeはこんな感じです↓。
(図121)
①設定ファイルを開く
これから行う変更を「全ユーザーに適用」する場合は「①/etc/profile」を、「特定ユーザーに適用」する場合は「④~/.profile」を開きます(※図122では「.bash_profile」を開いてしまっていますが、読み替えてください・・)
設定ファイルは「viエディタ」等で開きます。
(図122)
②設定ファイルに追記
設定ファイルに各自設定したい環境変数をセットします。以下は「LANG」の例なので各自の変数に置き換えてください。
(例)
export LANG=ja_JP.utf8
(図123)
③ログアウト&再ログイン
設定を反映させるために、一度ログアウトして再度ログインします。
$ exit
(図124)ログアウト
(図125)再ログイン
④環境変数のチェック
再びechoで環境変数の値を確認します。今度は狙った値にセットされているはずです。
(図126)
問題だった文字化けの事象の解消も確認できました。
(図127)
[…] 参考:Linuxで環境変数を永続化させる方法と手順について|Rainbow Engineログインシェルとは?非ログインシェルとの違いも併せてご紹介|Rainbow Engine環境変数の設定(~/.bash_profile, ~/.bashrc)|わくわくBank […]
[…] Linuxで環境変数を永続化させる方法と手順について […]