コンテンツ
シェル環境変数の詳細:読み込みプロセスのテスト
目標
シェル環境変数のロードプロセステストを理解する
環境変数を構成する場所を知る機能
スクリプトファイルを実行するためのシェル環境の切り替えの概要
スクリプトファイルを実行する際に、特定のシェル環境を指定してスクリプトファイルを実行することができます。これは、シェル環境を切り替えてスクリプトを実行するためのものです。
シェルログイン環境実行スクリプトファイル構文
sh/bash -l/--login 脚本文件
意味:最初にシェルログイン環境プロセスをロードして環境変数を初期化し、次にスクリプトファイルを実行します
シェル非ログイン環境変数実行スクリプトファイル構文
bash # 加载Shell非登录环境
sh/bash 脚本文件 # 直接执行脚本文件
意味:最初にシェルの非ログイン環境をロードするプロセスを実行して環境変数を初期化し、次にスクリプトファイルを実行します
テストケース
必要
シェルログイン環境は/etc/profileを実行します
シェルの非ログイン環境は/.bashrcを実行します
/ etc/profileファイルと/currentuser / .bashrcファイルにそれぞれ環境変数データを設定し、シェルスクリプトファイルに環境変数データを出力し、最後に別の環境に切り替えてシェルスクリプトファイルを実行し、上記のプロセスの操作
分析する
-
クリーンアップし、削除する/ etc / profileファイルのVAR1環境変数をクリーンアップして、構成ファイルをリロードします。
-
/ etc / profileを編集し、環境変数VAR1=VAR1を追加します
-
/root/.bashrcを編集し、環境変数VAR2=VAR2を追加します
-
demo1.shファイルを作成し、印刷用の環境変数データを読み取ります
#出力環境変数VAR1 #出力環境変数VAR2
-
シェルの非ログイン環境でdemo1.shスクリプトファイルを実行し、VAR1ではなくVAR2のみが出力されることを確認します。
-
シェルログイン環境でdemo1.shスクリプトファイルを実行し、VAR2とVAR1が出力されることを確認します。
デモ
/ etc/profileファイルを編集します
gedit / etc / profile
次のコンテンツを編集して追加し、保存して終了します
ルートディレクトリで、.bashrcファイルを編集します
gedit .bashrc
次のように最後の2行を編集して追加し、保存して終了します
ファイルdemo1.shを作成します
demo1.shにタッチします
ファイルdemo1.shを編集し、次のコンテンツを追加します
#!/bin/bash
echo $VAR1
echo $VAR2
スクリプトファイルを直接実行する
bash demo1.sh
スクリプトファイルを直接実行します。つまり、ログインシェル環境変数も非ログインシェル環境変数もロードされません。
最初に非ログインシェル環境変数をロードしてから、スクリプトファイルを実行します
bash
bash demo1.sh
シェルの非ログイン環境は、ファイル
当前用户/.bashrc
のそこで、VAR2の環境変数データを出力します
最初にログインシェル環境変数をロードしてから、スクリプトファイルを実行します
bash -l demo1.sh
シェルログイン環境
etc/profile
は、次当前用户/.bashrc
のファイルと環境変数データをロードしますそこで、VAR1とVAR2の環境変数データを出力します。
まとめ
1.シェル環境変数の初期ロード原理プロセス
分類 | 環境変数の初期化プロセス実行ファイルの順序 |
---|---|
シェルログイン環境の初期化プロセス | /etc/profile-》 / etc / profile.d / *。sh-》〜/ .bash_profile-》〜/ .bashrc-》 / etc / bashrc |
シェルの非ログイン環境の初期化プロセス | 〜/ .bashrc-》 / etc / bashrc-》 /etc/profile.d/*.sh |
2.では、環境変数はどこで定義されていますか?/ etc/profileと/etc/ bashrcの違いは?
ログインが必要な実行済みシェルスクリプトによって読み取られる環境変数は、/ etc / profile、/ current user/.bash_profileで構成されます。
ログインする必要のないユーザーが実行するシェルスクリプトによって読み取られる環境変数は、/ current user / .bashrc、/ etc/bashrcで構成されます。
シェル環境変数の詳細:シェル環境タイプの識別
目標
シェルログイン環境と非ログイン環境を識別する方法を理解する
文法
$0を使用してアンビエント構文を認識します
echo $0
出力
-bash
の略:シェルログイン環境出力
bash
の略:シェル非ログイン環境注:この
$0
環境変数をサブシェル(シェルスクリプトファイル)で使用すると、シェルスクリプト自体のファイル名が出力されます。
bashコマンドの構文
bash
Bashコマンド:シェルの非ログイン環境に切り替えるために使用されます
分析する
1.システムに直接ログインし、シェルログイン環境に$ 0を出力して、出力情報の効果を観察します。
2. bashコマンドを使用してシェルの非ログイン環境に切り替え、$ 0を出力して、出力情報の効果を観察します。
3. test.shスクリプトファイルを作成し、出力$ 0を編集して追加し、プログラムの保存後にtest.shスクリプトファイルを実行して、出力情報の効果を確認します。
まとめ
1.シェルログイン環境と非ログイン環境を識別する方法は?
$0 用于获取当前Shell环境的类型, bash代表Shell非登录环境, -bash 代表Shell登录环境
# $0不可以在脚本文件中使用, 因为代表获取脚本文件名字
シェル環境変数の詳細:シェル環境を詳細に切り替えます
目標
シェル環境を切り替えるコマンドを理解する
シェル環境コマンドの切り替えの概要
-
シェルログイン環境をロードするための直接ログイン
-
suは、シェルログインおよびシェル非ログイン環境をロードするようにユーザーを切り替えます
-
Bashはシェルログインおよびシェル非ログイン環境をロードします
環境モードの切り替え:bashスイッチ
注文
構文1:
bash # 加载【Shell非登录环境】
構文2:
bash -l Shell脚本文件 / bash --login shell脚本文件
sh -l shell脚本文件 / sh --login shell脚本文件
# 先加载【Shell登录环境】然后运行指定Shell脚本文件
分析する
bashを使用してtest.shスクリプトファイルを実行すると、現在の環境がシェルの非ログイン環境であることを示すエラーが発生します