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

推薦する

Linux でファイアウォールがオフになっているかどうかを確認する方法

1. サービス方法ファイアウォールのステータスを確認します。 [root@centos6 ~]# サ...

Nginxの仕組みの詳細な説明

Nginxの仕組みNginx はコアとモジュールで構成されています。 Nginx 自体は実際にはほと...

Linux テキスト検索コマンド find の詳細な使用方法

find コマンドは主にディレクトリやファイルを検索するために使用され、一致のために複数のパラメータ...

フラッシュコンテンツの表示に使用される OBJECT タグと EMBED タグの違いの紹介

1. はじめに:ウェブページにフラッシュ コンテンツを正常に表示したい場合は、ページ上のフラッシュ ...

NodeJs の高メモリ使用量のトラブルシューティング実戦記録

序文これは、オンライン コンテナーの拡張によって発生した調査です。最終的には、実際の OOM が原因...

純粋な CSS 流星群の背景サンプルコード

GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアルコード表...

Mysql データベース ストアド プロシージャの基本構文の説明

プロシージャ sp_name を削除します//これまで、MYSQL 構文の基礎知識について説明して...

6秒でMySQLに100万件のレコードを挿入する方法を教えます

1. アイデアMySQL に 1,000,000 件のレコードを挿入するのにたった 6 秒しかかかり...

面接では、select...for update がテーブルをロックするのか、それとも行をロックするのか尋ねられました。

目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...

HTML5+CSS3コーディング標準

黄金律プロジェクトに何人の人が取り組んでいるかに関係なく、すべてのコード行が同じ人によって書かれたよ...

VMware 上の CentOS に Oracle12.2 をサイレント インストールする詳細なグラフィック チュートリアル

環境準備: VMware+CentOS、jdk 1. システムディスクのサイズを確認する1. コマン...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

Vueプロジェクトでlessを使用するためのヒント

目次序文1. スタイルの浸透1. パターン浸透とは何ですか? 2. 使い方は? 2. ミキシング1....

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...

Windows での MySQL 8.0.18 インストール チュートリアル (図解)

ダウンロードダウンロードアドレス: https://dev.mysql.com/downloads/...