Help us understand the problem. What is going on with this article?

シェル変数と環境変数の違いをコマンドラインで確認する

More than 3 years have passed since last update.

最近、調べ直したので、この機会にまとめておきます。

はじめに

シェル変数は現在実行中のシェルだけで有効な変数ですが,環境変数はシェルから実行したコマンドにも引き継がれる変数です。
再入門 体で覚えるLinuxの基本:ITpro http://itpro.nikkeibp.co.jp/article/COLUMN/20060620/241337/

絵にすると↓な感じでしょうか。これをコマンドで確認していきます。

環境変数シェル変数.png

シェル変数の基本

「=」を使用することで変数を格納出来ます。また、変数の先頭に‘$’をつけることで、格納された値を参照出来ます。

CLI
[root@localhost ~]# echo $HOGE
[root@localhost ~]# HOGE=hogehoge
[root@localhost ~]# echo $HOGE
hogehoge

環境変数について

上記は「シェル変数」と言われ、そのシェル内でのみ有効な変数です。例えば、以下のようなシェルスクリプトを用意し、

hoge.sh
#!/bin/sh
echo ${HOGE}

実行しても、何も表示されません。

CLI
[root@localhost ~]# sh hoge.sh
  

しかし、「export」をつけると、その変数が「環境変数」となり、子プロセスでも有効になります。今度は、シェルスクリプトから変数の呼び出しに成功しています。

CLI
[root@localhost ~]# export HOGE
[root@localhost ~]# sh hoge.sh
hogehoge ←表示される

逆に子の環境変数を親に引き継ぐには

基本的には、子の環境変数を親が使うことは出来ません。
試しにシェルスクリプト内で環境変数を定義してみますが、その環境変数は親のシェルでは有効ではありません。hoge2.shを作成し、テストしてみます。

CLI
[root@localhost ~]# cat hoge2.sh
#!/bin/sh
HOGE2=hoge2
export HOGE2
[root@localhost ~]# sh hoge2.sh
[root@localhost ~]# echo $HOGE2
  ←何も表示されない

しかし、「source」コマンドを使うと、現在のシェルに環境変数を定義出来ます。

source hoge とするのは、ファイル hoge に書かれた文字列を一つずつ自分の手でタイプしたのと同じことである。
UNIXの部屋 コマンド検索:source (*BSD/Linux) http://x68000.q-e-d.net/~68user/unix/pickup?source

CLI
[root@localhost ~]# source hoge2.sh
[root@localhost ~]# echo $HOGE2
hoge2

参考

まんがでわかるLinux シス管系女子(日経BP Next ICT選書)
日経BP社 (2015-02-19)
売り上げランキング: 4,730
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away