Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

CentOS Linux

Linuxで環境変数を永続化させる方法と手順について

投稿日:2021年3月9日 更新日:

<目次>

(1) Linuxで環境変数を永続化させる方法と手順について
 (1-1) 実現方法
 (1-2) 設定手順

(1) Linuxで環境変数を永続化させる方法と手順について

Linuxにおいて、TeraTermやPuttyでログインして操作する際、環境変数を永続的に設定するための方法についてご紹介します。

(1-1) 実現方法

ポイントとして「ログインシェル」や「非ログインシェル」にOSにログインした際に自動で環境変数をセットするように仕掛けていきます。ログインシェルというのは、OSユーザのログイン時に、起動される「シェル」です(⇒ログインシェルや非ログインシェルとは?

本記事ではシェルの中でも「bash」を例にご紹介していきます(※余談ですが、シェルにはbash以外にもDash、csh、ksh、zshなど色々と種類があります。

(1-1-1) 起動ファイルの順序について

特にbash(シェルを実装したコマンド言語)の場合は、以下の順序で起動ファイルを読み込んでいきます。
 
(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)」の名前を受け継いでいるため、別々のファイルになっているという経緯があるようです。

(補足2)
①の「/etc/profile」は代わりに「/etc/environment」への追記も可能で、その場合は「[環境変数名]=[値]」で記述します。

 

(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)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-CentOS, Linux

執筆者:


  1. […] 参考:Linuxで環境変数を永続化させる方法と手順について|Rainbow Engineログインシェルとは?非ログインシェルとの違いも併せてご紹介|Rainbow Engine環境変数の設定(~/.bash_profile, ~/.bashrc)|わくわくBank […]

  2. […] Linuxで環境変数を永続化させる方法と手順について […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

CATALINA_HOMEが設定されない時の想定原因と対処法

<目次> (1) CATALINA_HOMEが設定されない時の想定原因と対処法  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 (1) CATALINA_HOMEが …

さくらVPS入門!CentOSを初期設定する手順の例をご紹介

<目次> (1) さくらVPS入門!CentOSを初期設定する手順の例をご紹介  (1-1) 設定の概要  (1-2) 【OS設定#1】一般ユーザの作成(rootでないユーザ)  (1-3) 【OS設 …

Linux:定期的に再起動するスクリプト

Linuxサーバーを定期的に再起動するスクリプトを紹介します。定期的に再起動するという処理はシステム構築においては、運用の中で定義される「死活監視」に関連してくる話になります。 ●シェルとは?シェルス …

CentOS6で「Cannot find a valid baseurl for repo」が発生した時の対処方法について

<目次> (1) CentOS6で「Cannot find a valid baseurl for repo」が発生した時の対処方法について  (1-1) 発生状況・エラーメッセージ  (1-2) 原 …

scpコマンドを使った異なるLinuxサーバ間のファイル転送の方法

異なるLinuxサーバ間(サーバA⇔サーバB)でファイルを転送する方法について書きます。 (0)目次&概説 >(1) 転送コマンドの構文 >(2) 転送コマンドの実行  >(2-1) 転送元の転送前( …

  • English (United States)
  • 日本語
Top