MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


環境変数とシェル変数
profile-img
投稿者: Nakamaさん
投稿日:2021/08/18 18:10
更新日:
like-img
分類
技術
テクノロジー
Unix系サーバ
キャリア
運用・保守
投稿内容
今回は、Linuxにおける環境変数とシェル変数の関係についてご紹介していきます。

Linux環境では、ユーザーからの命令(コマンド)を受け取り、その命令をシェルで翻訳を行い、カーネルへ渡します。翻訳した内容を元にカーネルが各システムに要求をし、処理を実行しています。
シェルを動作させる機能の一つとして、シェル変数や環境変数があります。

シェル変数は現在実行中のシェルだけで有効な変数ですが,環境変数はシェルから実行したコマンドにも引き継がれる変数です。
 bash環境では,シェル変数と環境変数はほとんど一体化して扱われており,シェル変数をエクスポート(外部に公開)すると環境変数になります。


変数名(VAR)と値(Hello)を「=」でつなぐとシェル変数を格納できます。「$変数名」とすることで変数に設定された値を参照することができます。
----------------------------------------
[root@localhost ~]# echo $VAR
[root@localhost ~]# VAR=Hello
[root@localhost ~]# echo $VAR
Hello
----------------------------------------

以下のようなスクリプト[smp.sh]を作成し、

----------------------------------------
#!/bin/bash
echo $VAR
----------------------------------------

「VAR=Hello」と設定した環境下で実行すると何も表示されません。

----------------------------------------
[root@localhost ~]# VAR=Hello
[root@localhost ~]# echo $VAR
Hello
[root@localhost ~]# ./smp.sh

----------------------------------------
上記は、親プロセスの環境下で変数を設定しており、シェル実行のコマンド(./)が別プロセス(子プロセス)上でシェルを実行するコマンドとなっているため、何も設定していないシェル変数は、別プロセスで反映されませんでした。

子プロセス上でもシェル変数を反映させるためには、「export」コマンドを使用してシェル変数を環境変数に変更すると有効になります。

----------------------------------------
[root@localhost ~]# export VAR
[root@localhost ~]# ./smp.sh
Hello
----------------------------------------

以上、シェル変数と環境変数の関係についてでした。
ご参考にしていただけると幸いです。


コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3