序文 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/プロファイル /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 は、すべてのユーザーのシステム環境変数です。 シェルは、次の順序で最初に見つかったファイルを実行し、残りは無視します。
.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 をご愛顧いただきありがとうございます。 以下もご興味があるかもしれません:
|
1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...
目次1. はじめに2. 解決策2.1 ファイアウォールを設定してポートを開く2.3 ポートを確認し、...
このブログは仕事のメモです環境: nginx バージョン: nginx/1.14.0 Centos ...
目次HTTP ハイジャック、DNS ハイジャック、XSS HTTPハイジャックDNSハイジャックXS...
さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...
現在、プロジェクトを作成しました。インターフェースは次のとおりです。これはフレームセットを使用して行...
目次序文クイックレビュー: JavaScript 関数関数とは何ですか?関数を宣言する関数の呼び出し...
目次ライフサイクルを理解する理由ライフサイクルとはライフサイクルフック関数作成され、マウントされたフ...
この記事では、Linux 環境の Apache で https サービスを有効にする方法について説明...
目次1. 仮想ホスト1.1 仮想ホストの概念1.2 仮想ホストタイプ2. IP仮想ホストに基づく2....
1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...
MySQL データベースを使用する際、何らかの理由で長期間 MySQL にログインしていない場合、ま...
コンセプト紹介: MySQL の redo ログにはトランザクションの動作が記録されることはご存じの...
1. MySQL独自のストレステストツールMysqlslap mysqlslap は、mysql に...
私は長い間この問題に悩まされていましたが、検索してみたところ、実際にこの問題を解決した人がいることが...