CentOS の環境変数と設定ファイルの詳細な説明

CentOS の環境変数と設定ファイルの詳細な説明

序文

CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケーション システム設定ファイルと同様です。グローバル、ユーザー、シェル設定ファイルがあります。また、異なるレベルには継承関係がある場合もあります。

この記事では、CentOS の環境変数と設定ファイルに関する関連内容を詳しく紹介します。詳しい紹介を見てみましょう。

環境変数とは何か

bash シェルは、環境変数と呼ばれる機能を使用して、シェル セッションと作業環境に関する情報を保存します。つまり、プログラムまたはシェルで実行されているスクリプトがデータにアクセスできるように、データをメモリに保存できるようになります。

bash シェルでは、環境変数は次の 2 つのカテゴリに分けられます。

  • グローバル変数
  • ローカル変数

グローバル環境変数

グローバル環境変数は、シェル セッションと生成されたすべてのサブシェルに表示されます。ローカル変数は、それを作成したシェルにのみ表示されます。

グローバル変数を表示するには、env または printenv コマンドを使用できます。

[root@dev ~]# env
ホスト名=localhost
TERM=Linux の場合
シェル=/bin/bash
ヒストサイズ=1000
SSH_クライアント=10.0.100.17 56344 22
SSH_TTY = /dev/pts/0
ユーザー=ルート


[root@dev ~]# 
[root@dev ~]# printenv
ホスト名=localhost
TERM=Linux の場合
シェル=/bin/bash
ヒストサイズ=1000
SSH_クライアント=10.0.100.17 56344 22
SSH_TTY = /dev/pts/0
ユーザー=ルート


[root@dev ~]# printenv TERM
リナックス

$ + 変数名を使用して環境変数を使用します。

[root@dev ~]# echo $HOME
/根

システム環境変数は、一般ユーザーの環境変数と区別するために、通常は大文字で記述されます。

ローカル環境変数

名前が示すように、ローカル環境変数は、定義されているプロセス内でのみ表示されます。 set コマンドは、ローカル変数、グローバル変数、ユーザー定義変数など、特定のプロセスに設定されているすべての環境変数を表示します。

[root@dev ~]# 設定
バイナリ = /bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV =()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="リリース" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.1.2(1)-リリース'
カラー=/etc/DIR_COLORS
列数=165

ユーザー定義変数

bash シェルを起動したら、そのシェル プロセス内で表示できるローカル変数を作成できます。プロセスによって作成されたサブシェルは、親シェルのローカル変数を読み取ることができません。

[root@dev シェル]# sh a.sh

2
22
2
[root@dev シェル]# cat a.sh
#!/bin/bash

1 = 1;
エクスポート b=2;

sh b.sh

$b をエコーし​​ます。


[root@dev シェル]# cat b.sh
#!/bin/bash

$a をエコーし​​ます。
$b をエコーし​​ます。
22 です
$b をエコーし​​ます。
[root@dev シェル]# sh a.sh 

2
22
2

ユーザーは変数をエクスポートしてグローバル変数にし、サブシェルでも読み取れるようにすることができます。サブシェルが変数を変更しても、親シェルは影響を受けません。

サブシェルで環境変数を設定した場合、それを親シェルで読み取りたい場合はどうすればよいでしょうか?

使用シナリオの 1 つは、複数の実行スクリプトが env.sh スクリプトに記述された共通の環境構成に依存している場合です。他の実行スクリプトはどのようにして env.sh 内の変数を読み取ることができるのでしょうか。サブシェルで変数をエクスポートしても、親シェルには影響しません。

source コマンド (C シェルから) は、bash シェルの組み込みコマンドです。ドット コマンドはドット記号 (Bourne Shell から) であり、source の別名です。どちらのコマンドも、現在のシェルの環境として実行されるスクリプトを引数として受け取ります。つまり、新しいサブプロセスは開始されません。スクリプトに設定されたすべての変数は、現在のシェルの一部になります。

[root@dev シェル]# cat c.sh
. ./env.sh
ソース ./profile.sh

$env をエコーし​​ます。
$profile をエコーし​​ます。
[root@dev シェル]# cat env.sh
env='テスト';
[root@dev シェル]# cat profile.sh 
プロファイル="dev";
[root@dev シェル]# sh c.sh 
テスト
開発

環境変数を削除する場合

var_name の設定を解除

グローバル環境変数の設定

上記から、このプロセスと子プロセスで共通の環境変数を使用する必要があることがわかります。これは、source コマンドを使用して同じ環境変数スクリプトを読み取ることで実現できます。これはユーザー定義のスキームです。しかし、多くの場合、読み取る必要のあるグローバル環境変数のソースがわからないため、ファイルを読み取るにはデフォルトの環境変数が必要になります。

Linux システムにログインすると、bash シェルがログイン シェルとして起動します。ログインシェルは5つの異なるスタートアップファイルから読み取ります

  • /etc/プロファイル
  • $HOME/.bash_profile
  • $HOME/.bashrc
  • $HOME/.bash_login
  • $HOME/.プロファイル

/etc/プロファイル

/etc/profile ファイルは、bash シェルのデフォルトのメイン起動ファイルです。 Linux システムにログインしている限り、bash は /etc/profile 起動ファイル内のコマンドを実行します。

[root@dev シェル]# cat /etc/profile
# /etc/プロファイル

# ログイン設定用のシステム全体の環境とスタートアッププログラム
# 関数とエイリアスは/etc/bashrcに記述します

# 何をしたいのか分かっていない限り、このファイルを変更するのは得策ではありません
# は実行しています。custom.shシェルスクリプトを作成する方がはるかに良いです
# /etc/profile.d/ で環境に合わせてカスタム変更を加えることができます。
# 将来のアップデートでマージする必要がなくなります。

パスマンジ(){
 ケース ":${PATH}:"
  *:"$1":*)
   ;;
  *)
   if [ "$2" = "after" ] ; then
    パス=$パス:$1
   それ以外
    パス=$1:$パス
   フィ
 エサック
}


[ -x /usr/bin/id ]の場合;
 if [ -z "$EUID" ]; then
  # ksh の回避策
  EUID=`id -u`
  UID=`id -ru`
 フィ
 USER="`id -un`"
 ログ名=$USER
 メール="/var/spool/mail/$USER"
フィ

# パス操作
[ "$EUID" = "0" ]の場合
 パスムンジ /sbin
 パス変更 /usr/sbin
 パス変更 /usr/local/sbin
それ以外
 pathmunge /usr/local/sbinの後
 pathmunge /usr/sbinの後
 pathmunge /sbin後
フィ

ホスト名=`/bin/hostname 2>/dev/null`
ヒストサイズ=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
 エクスポート HISTCONTROL=ignoreboth
それ以外
 エクスポート HISTCONTROL=ignoredups
フィ

エクスポート PATH ユーザー ログ名 メール ホスト名 HISTSIZE HISTCONTROL

# デフォルトでは、umask を設定する必要があります。これはログインシェル用に設定します
# システム予約済み uid/gid の現在のしきい値は 200 です
# uidgid予約の有効性は以下で確認できます
# /usr/share/doc/setup-*/uidgid ファイル
[ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ] の場合;
 umask 002
それ以外
 umask 022
フィ

/etc/profile.d/*.sh の i に対して、
 [ -r "$i" ]の場合;
  [ "${-#*i}" != "$-" ] の場合;
   . "$i"
  それ以外
   . "$i" >/dev/null 2>&1
  フィ
 フィ
終わり

設定解除 i
-f パスの変更を解除

このファイルは、/etc/profile.d/ の下にあるすべての *.sh ファイルを読み取り、コマンド (ソース) をクリックして変数を読み込みます。つまり、/etc/profile および /etc/profile.d/*.sh で定義された変数は、グローバル システム環境変数です。

$HOME/.bash_profile

$HOME の下の起動ファイルはすべて、ユーザーの環境変数を定義するユーザー固有の起動ファイルです。 /etc/profile は、すべてのユーザーのシステム環境変数です。

シェルは、次の順序で最初に見つかったファイルを実行し、残りは無視します。

  • $HOME/.bash_profile
  • $HOME/.bash_login
  • $HOME/.プロファイル

.bashrc は .bash_profile を通じて呼び出されます。

[root@dev シェル]# cat ~/.bash_profile 
# .bash_プロファイル

# エイリアスと関数を取得する
[ -f ~/.bashrc ]の場合;
  . ~/.bashrc
フィ

# ユーザー固有の環境と起動プログラム

PATH=$PATH:$HOME/bin

エクスポートPATH

要約:

設定するシステムグローバル環境変数(JAVA_HOME など)を /etc/profile.d/ ディレクトリに配置し、*.sh スクリプトの形式で定義します。

さて、以上がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただきありがとうございます。

以下もご興味があるかもしれません:
  • CentOS 7 での LNMP 開発環境の設定と設定ファイル管理の詳細な説明
  • CentOS での SSH パスワードレス ログイン用設定ファイル

<<:  JavaScriptにおけるこれの深い理解

>>:  MySQL 検査スクリプト (必読)

推薦する

Tinymce リッチテキストを使用して Vue のツールバーボタンをカスタマイズする実践

目次tinymce、tinymce ts、tinymce-vue 宣言ファイルをインストールするパッ...

Nginx Rewrite の使用シナリオと設定方法の分析

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

Vue+Openlayer で select を使用して要素を選択する実装コード

効果画像: 実装コード: <テンプレート> <div id="map&q...

MySQL データベースのインデックス順序の詳細な説明

目次事件の原因解剖学ファイルの並べ替えファイルのソートが非常に遅いのですが、他に解決策はありますか?...

Dockerコンテナはルーティングを介して直接通信し、ネットワーク通信を実現します。

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...

MySQL の時間保持問題に関する簡単な分析

MySQL のデフォルトの時間タイプ (datetime と timestamp) の精度は秒です。...

Windows 10 で Ubuntu 20.04 LTS をアップデートする方法

2020 年 4 月 23 日、本日、Windows 上の Ubuntu 20.04 では、Ubun...

シンプルなウェブデザインコンセプトのカラーマッチング

(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...

VueでTypeScriptを使用する方法

導入近年、TypeScript を求める声がますます高まり、TypeScript はフロントエンドに...

Docker ケース分析: Redis サービスの構築

目次1 マウントディレクトリとファイルを作成する2 Redisイメージを取得する3 コンテナを作成し...

Python スクリプトを Ubuntu で直接実行する方法

翻訳プログラムを例に挙げてみます。前回はWindowsでのアプリケーションのパッケージ化についてお話...

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

実際の開発ではポップアップウィンドウがよく使われます。CSS3を勉強していたときに、閉じることができ...

CSS3で蓮の花が咲くアニメーション効果を実現

まずは効果を見てみましょう:この効果は非常に華やかに見えますが、原理は複雑ではありません。1 枚の花...

Linux 上で Python3.6 をコンパイルしてインストールするための詳細なチュートリアル

1. まず、公式ウェブサイト https://www.python.org/downloads/so...