Linux環境変数の設定戦略の詳細な説明

Linux環境変数の設定戦略の詳細な説明

ソフトウェアのインストールをカスタマイズする場合、多くの場合、環境変数を設定する必要があります。以下に、環境変数を設定するためのさまざまな方法を示します。

以下のすべての例の環境は次のとおりです。

  • システム: Ubuntu 14.0
  • ユーザー名: uusama
  • MySQL環境変数パスを設定する必要があります: /home/uusama/mysql/bin

Linuxは環境変数を読み取ります

環境変数を読み取る方法:

  • エクスポートコマンドは、現在のシステムで定義されているすべての環境変数を表示します。
  • echo $PATHコマンドは、現在のPATH環境変数の値を出力します。

これら2つのコマンドを実行した場合の効果は次のとおりです。

uusama@ubuntu:~$ エクスポート
-x HOME="/home/uusama" を宣言します
-x LANG="en_US.UTF-8" を宣言します
-x LANGUAGE="en_US:" を宣言します
-x LESSCLOSE="/usr/bin/lesspipe %s %s" を宣言します
-x LESSOPEN="| /usr/bin/lesspipe %s" を宣言します
-x LOGNAME="uusama" を宣言します
-x MAIL="/var/mail/uusama" を宣言します。
-x PATH="/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" を宣言します。
-x SSH_TTY="/dev/pts/0" を宣言します。
-x TERM="xterm" を宣言します
-x USER="uusama" を宣言します

uusama@ubuntu:~$ echo $PATH
/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PATH 変数は、コマンドを実行するための検索パスを定義します。異なるパスはコロンで区切られます。エクスポート定義を使用する場合は、二重引用符を追加することも追加しないこともできます。

Linux環境変数の設定方法1: PATHをエクスポートする

export コマンドを使用して PATH の値を直接変更し、環境変数を入力するように MySQL を構成します。

PATH=/home/uusama/mysql/bin:$PATH をエクスポートします

# または、先頭に PATH を置きます export PATH=$PATH:/home/uusama/mysql/bin

注記:

  • 有効時間: 即時
  • 有効期間: 現在の端末で有効、ウィンドウが閉じられた後は無効
  • 効果範囲: 現在のユーザーのみ有効
  • 元の設定を上書きしないように、設定された環境変数、つまり$PATH部分に元の設定を追加することを忘れないでください。

Linux 環境変数の設定方法 2: vim ~/.bashrc

ユーザー ディレクトリの ~/.bashrc ファイルを変更して設定します。

vim ~/.bashrc

# 最後の行に export PATH=$PATH:/home/uusama/mysql/bin を追加します

注記:

  • 有効時間: 同じユーザーで新しいターミナルを開くか、手動で~/.bashrcをsourceしたときに有効になります。
  • 発効日: 永久
  • 効果範囲: 現在のユーザーのみ有効
  • 後続の環境変数読み込みファイルによって PATH 定義が上書きされると、有効にならない可能性があります。

Linux 環境変数の設定方法 3: vim ~/.bash_profile

~/.bashrc ファイルを変更する場合と同様に、ファイルの末尾に新しいパスを追加するだけです。

vim ~/.bash_profile

# 最後の行に export PATH=$PATH:/home/uusama/mysql/bin を追加します

注記:

  • 有効時間: 同じユーザーで新しいターミナルを開くか、手動で~/.bash_profileをsourceしたときに有効になります。
  • 発効日: 永久
  • 効果範囲: 現在のユーザーのみ有効
  • ~/.bash_profileファイルがない場合、~/.profileファイルを編集するか、新しいファイルを作成します。

Linux環境変数の設定方法4: vim /etc/bashrc

この方法はシステム構成を変更するもので、管理者権限 (root など) またはファイルへの書き込み権限が必要です。

# /etc/bashrc ファイルが編集可能でない場合は、編集可能になるように変更する必要があります chmod -v u+w /etc/bashrc

vim /etc/bashrc

# 最後の行に export PATH=$PATH:/home/uusama/mysql/bin を追加します

注記:

  • 有効時間: 新しいターミナルを開くか、/etc/bashrcを手動でsourceしたときに有効になります。
  • 発効日: 永久
  • 影響範囲: すべてのユーザーに適用

Linux 環境変数の設定方法 5: vim /etc/profile

この方法ではシステム構成が変更され、vim /etc/bashrc と同様に、管理者権限またはファイルへの書き込み権限が必要になります。

# /etc/profile ファイルが編集可能でない場合は、編集可能になるように変更する必要があります chmod -v u+w /etc/profile

vim /etc/プロファイル

# 最後の行に export PATH=$PATH:/home/uusama/mysql/bin を追加します

注記:

  • 有効時間: 新しいターミナルを開いたとき、または手動で/etc/profileをsourceしたときに有効になります。
  • 発効日: 永久
  • 影響範囲: すべてのユーザーに適用

Linux環境変数の設定方法6: vim /etc/environment

この方法は、システム環境構成ファイルを変更するもので、管理者権限またはファイルへの書き込み権限が必要です。

# /etc/bashrc ファイルが編集可能でない場合は、編集可能になるように変更する必要があります chmod -v u+w /etc/environment

vim /etc/プロファイル

# 最後の行に export PATH=$PATH:/home/uusama/mysql/bin を追加します

注記:

  • 有効時間: 新しいターミナルを開くか、/etc/environmentを手動でsourceしたときに有効になります。
  • 発効日: 永久
  • 影響範囲: すべてのユーザーに適用

Linux環境変数読み込み原理の分析

上記では環境変数のさまざまな設定方法をリストしましたが、Linux はこれらの設定をどのように読み込むのでしょうか?どのような順序でロードされますか?

特定の読み込み順序により、同じ名前の環境変数定義が上書きされたり、無効になったりする可能性があります。

環境変数の分類

環境変数は、ユーザー定義の環境変数とシステムレベルの環境変数に簡単に分けられます。

  • ユーザーレベルの環境変数定義ファイル: ~/.bashrc、~/.bash_profile
  • システムレベルの環境変数定義ファイル: /etc/bashrc、/etc/bash_profile、/etc/environment

また、ユーザー環境変数では、システムはまず ~/.bash_profile ファイルを読み取ります。ファイルが存在しない場合は、~/.bash_login を読み取ります。ファイルも存在しない場合は、~/.profile を読み取り、次にこれらのファイルの内容に基づいて ~/.bashrc を読み取ります。

Linux環境変数の読み込み順序をテストする方法

異なるファイルに対して環境変数がロードされる順序をテストするために、各環境変数定義ファイルの最初の行に同じ環境変数 UU_ORDER を定義します。この変数の値は、現在のファイル名に連結された独自の値です。

変更する必要があるファイルは次のとおりです。

  • /etc/環境
  • /etc/プロファイル
  • /etc/profile.d/test.sh、新しいファイルを作成します。フォルダーをスキップすることはできません
  • /etc/bashrc または /etc/bash.bashrc
  • ~/.bash_profile、または ~/.profile
  • ~/.bashrc

各ファイルの最初の行に次のコードを追加し、コロンの後の内容を現在のファイルの絶対ファイル名に変更します。

export UU_ORDER="$UU_ORDER:~/.bash_profile"

変更後、保存し、新しいウィンドウを開いて、$UU_ORDER を echo して変数の値を確認します。

uusama@ubuntu:~$ echo $UU_ORDER
$UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc

Linux が環境変数をロードする順序は次のようになると考えられます。

  1. /etc/環境
  2. /etc/プロファイル
  3. ディレクトリ
  4. プロファイル
  5. ~/.プロファイル
  6. ~/.bashrc

Linux環境変数ファイルの読み込みの詳細な説明

上記のテストから、Linux が環境変数をロードする順序は次のようになることが簡単にわかります。

システム環境変数 -> ユーザー定義環境変数
/etc/environment -> /etc/profile -> ~/.profile

/etc/profile ファイルを開くと、このファイル内のコードが /etc/bash.bashrc ファイルを読み込み、次に /etc/profile.d/ ディレクトリ内の .sh ファイルを確認して読み込むことがわかります。

# /etc/profile: Bourne シェル (sh(1)) のシステム全体の .profile ファイル
# および Bourne 互換シェル (bash(1)、ksh(1)、ash(1)、...)。

[ "$PS1" ]の場合;
 [ "$BASH" ] && [ "$BASH" != "/bin/sh" ] の場合、
  # ファイル bash.bashrc ではすでにデフォルトの PS1 が設定されています。
  # PS1='\h:\w\$'
  [ -f /etc/bash.bashrc ]の場合;
   . /etc/bash.bashrc
  フィ
 それ以外
  [ "`id -u`" -eq 0 ]の場合;
   PS1='#'
  それ以外
   PS1='$'
  フィ
 フィ
フィ

[ -d /etc/profile.d ]の場合;
 /etc/profile.d/*.sh の i に対して、
  [ -r $i ]の場合;
   . $i
  フィ
 終わり
 設定解除 i
フィ

次に、~/.profile ファイルを開くと、その中に ~/.bashrc ファイルが読み込まれていることがわかります。

# bashを実行している場合
if [ -n "$BASH_VERSION" ]; then
  # .bashrc が存在する場合はそれを含める
  [ -f "$HOME/.bashrc" ]の場合;
  . "$HOME/.bashrc"
  フィ
フィ

# ユーザーのプライベートbinディレクトリを含むようにPATHを設定します
PATH="$HOME/bin:$HOME/.local/bin:$PATH"

~/.profile ファイル内のコードから、/.profile ファイルはユーザーがログインしたときに 1 回だけ読み取られ、/.bashrc はシェル スクリプトが実行されるたびに 1 回読み取られることがわかります。

いくつかのヒント

環境変数ファイルをカスタマイズできます。たとえば、特定のプロジェクトの下に uusama.profile を定義し、エクスポートを使用してこのファイルで一連の変数を定義し、~/.profile ファイルの後に source uusama.profile を追加します。このようにして、ログインするたびに、シェル スクリプトで定義した一連の変数を使用できます。

alias コマンドを使用して、alias rm="rm -i" (二重引用符が必要) などのコマンド エイリアスを定義し、このコードを ~/.profile に追加することもできます。この方法では、rm コマンドを使用するたびに、rm -i コマンドを使用するのと同じになり、非常に便利です。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux環境で環境変数を設定する方法
  • Linux環境変数ファイルの簡単な紹介
  • Linux 環境変数の設定方法のまとめ (.bash_profile と .bashrc の違い)
  • Linux で Bash 環境変数を設定する方法
  • Linux環境変数の設定に関する完全なガイド
  • Linux システムで Java 環境変数を設定する方法
  • Linux での Java 環境変数のインストールと設定
  • Linuxで環境変数を設定するための詳細な手順
  • Linux で環境変数 JAVA_HOME を変更/設定する方法について簡単に説明します。

<<:  Excel ファイルを MySQL データベースにインポートする方法

>>:  Centos7.2 で mysql5.7 データベースをインストールするための詳細な手順

推薦する

ダイナミックな波効果を実現するSVG+CSS3

ベクトル波 <svg viewBox="0 0 560 20" class...

mysql のインデックスと FROM_UNIXTIME に関する問題

ゼロ、背景今週の木曜日にたくさんのアラートを受け取りました。DBA に確認を依頼したところ、遅いクエ...

Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...

NavicatがMySQL8.0.11に接続するとエラー2059が発生する

間違いNavicat Premium を使用して MySQL に接続すると、次のエラーが発生します。...

JavaScript ES6 分割演算子の理解と応用

目次序文脱構築記号の役割使い方分割割り当ての適用アプリケーションの簡単な紹介JSONデータを抽出する...

Centos7 で keepalived ログを別のパスに設定する方法の詳細な説明

Keepalived のインストール: cd <keepalived_sourcecode_p...

Linux での MySQL 8.0.11 のインストールに関するチュートリアル

1. 公式サイトにアクセスしてインストールパッケージをダウンロードしますダウンロードリンク: クリッ...

関連するプロパティのリストを含む HTML エリア イメージ ホットスポットの使用の概要

<area> タグは主にイメージマップで使用されます。イメージマップにアクティブ領域 (...

IE6 で幅と高さがおかしいバグ

図に示すように: しかし、IE6で表示すると、right:1px:になります。 IE6 には、幅と高...

CSS エラスティック ボックス flex-grow、flex-shrink、flex-basis の詳細な説明

3 つの属性 flex-grow、flex-shrink、flex-basis の機能は次のとおりで...

VMware12.0 インストール Ubuntu14.04 LTS チュートリアル

私は、デスクトップ バージョンとサーバー バージョンの両方で、仮想マシンにさまざまなイメージを何度も...

Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)

Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...

CSS3 はクールな 3D 回転遠近法効果を実現します

CSS3はクールな3D回転パースペクティブを実現します3D アニメーション効果はますます人気が高まっ...

分散監視システムZabbixはSNMPとJMXチャネルを使用してデータを収集します

前回の記事では、Zabbix のパッシブ、アクティブ、Web 監視に関するトピックについて学習しまし...