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

推薦する

MySQL データベース JDBC プログラミング (Java は MySQL に接続します)

目次1. データベースプログラミングの基本条件2. Java でのデータベースプログラミング: JD...

Pycharm2017はpython3.6とmysqlの接続を実現します

この記事では、pycharm2017でpython3.6とmysqlを接続する方法を参考までに紹介し...

CSS を使用して画像の下の空白を数ピクセル消去する方法の詳細な説明

最近、友人が私に質問をしました。ページをレイアウトすると、画像の下に 1 ~ 2 ピクセルの空白があ...

Linuxの一般ユーザー向けスケジュールタスクの詳細な説明

序文通常のユーザーはcrontabスケジュールタスクを定義します。たとえば、Oracleユーザーはス...

Nginx フォワードプロキシとリバースプロキシの違いと原理分析

1. フォワードプロキシとリバースプロキシの違いフォワード プロキシはクライアントのプロキシとして機...

Vueのフロントエンドとバックエンドのポートの不一致の問題を解決する

Vue のフロントエンドとバックエンドのポートが一致していませんconfig index.jsファイ...

Windows 10にOdoo12開発環境をインストールする方法

序文多くの友人は Mac コンピューターを持っていないと言っていますが、Windows 開発は実際に...

CentOS7 での MySQL 8.0.16 のインストールと設定のチュートリアル

MySQLの古いバージョンをアンインストールします(古いバージョンがない場合は、この手順をスキップし...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

tomcat8の最新のLinuxインストールプロセス

ダウンロード参考:ダウンロードするコアパッケージを選択してくださいダウンロード後、ファイルをサーバー...

CSS3 クリックボタン円形進行ティック効果実装コード

目次8. CSS3 クリックボタンの円形進捗チェック効果8.1 画像プレビュー8.2 index.h...

MySQL 8.0 Windows zip パッケージ版の詳細なインストール手順

MySQL 8.0 Windows zipのインストール手順は次のように紹介されています。準備する:...

HTML CSS の 3 つの一般的なスタイル セレクター

1: タグセレクタータグセレクターはすべてのタグに使用されます。ここでは p を例に挙げます。つまり...

Docker で FastDFS をデプロイする方法

Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...

MySQL ジョイントテーブル更新デー​​タの詳細な例

1.MySQL UPDATE JOIN構文MySQL では、UPDATE ステートメントでJOIN句...