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 検査スクリプト (必読)

推薦する

Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...

Alibaba Cloud Server Tomcatにアクセスできません

目次1. はじめに2. 解決策2.1 ファイアウォールを設定してポートを開く2.3 ポートを確認し、...

geoip を使用して nginx で地域を制限する方法

このブログは仕事のメモです環境: nginx バージョン: nginx/1.14.0 Centos ...

フロントエンドセキュリティの詳細な説明: JavaScript の http ハイジャック対策と XSS

目次HTTP ハイジャック、DNS ハイジャック、XSS HTTPハイジャックDNSハイジャックXS...

CSS で 3D ブック効果を実装するためのサンプル コード

さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...

フレームセットの高さを設定する際のインターフェース変形の解決策

現在、プロジェクトを作成しました。インターフェースは次のとおりです。これはフレームセットを使用して行...

JavaScriptコールバック関数の詳細な理解

目次序文クイックレビュー: JavaScript 関数関数とは何ですか?関数を宣言する関数の呼び出し...

Vueライフサイクルの詳細な説明

目次ライフサイクルを理解する理由ライフサイクルとはライフサイクルフック関数作成され、マウントされたフ...

Linux 環境の Apache で https サービスを有効にする方法の詳細な説明

この記事では、Linux 環境の Apache で https サービスを有効にする方法について説明...

Nginx 仮想ホストの詳細な分析

目次1. 仮想ホスト1.1 仮想ホストの概念1.2 仮想ホストタイプ2. IP仮想ホストに基づく2....

Mysqlクエリ条件で文字列の末尾にスペースがあっても一致しない問題の詳細な説明

1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...

Linux MySQL ルートパスワードを忘れた場合の解決方法

MySQL データベースを使用する際、何らかの理由で長期間 MySQL にログインしていない場合、ま...

MySQL でのログインを取り消す

コンセプト紹介: MySQL の redo ログにはトランザクションの動作が記録されることはご存じの...

MySQL ストレステストツール Mysqlslap の使用

1. MySQL独自のストレステストツールMysqlslap mysqlslap は、mysql に...

IE ラベル LI テキスト折り返し問題について

私は長い間この問題に悩まされていましたが、検索してみたところ、実際にこの問題を解決した人がいることが...