export
コマンド
お兄ちゃん!
シェルで宣言した変数が
シェルスクリプトで使えないんだ!
PATH
変数とかは使えるのにどうして?
PATH
のような変数を
環境変数を知れば
PATH
変数のような
使い方ができる
ということなんだね?
そういうことだね
今回は環境変数の
使い方を学ぼう!
export
は
環境変数を
宣言するよ
export [オプション]... [変数名[=値]]...
変数は宣言されたシェルでのみ有効だけど環境変数は宣言されたシェルとその子プロセスで有効だよ!
シェルで「変数」を宣言したから シェルの子プロセスであるシェルスクリプトではその変数が使えなかったんだね
一方、シェルで「環境変数」を宣言すれば そこで実行したコマンドやシェルスクリプトはその環境変数を読み取れるんだね!
そのとおり!
自分で定義する環境変数が設定されている前提で動くスクリプトはなんか嫌だなぁ…いざ使おうとするとどう使ってよいか迷うね
みどりの感覚は正しいよ環境変数が無くても動くけどあるとそれに従うような内容がいいね
以前作った
greet
スクリプトで環境変数を使うようにしてみたよこんなのはどうだろう?#!/bin/bash
if [ -z "$NAME" ]
then
echo -n "名前を入力して下さい: "
read NAME
fi
echo "こんにちは、$NAMEさん!"
いい内容だね!
NAME
環境変数が設定されていなければ名前の入力を求めてNAME
変数に代入して名前を表示しNAME
環境変数が設定されていれば名前の入力を求めずその名前を表示するんだねえへへ…そういうことです
では変数と環境変数の違いを見るために最初は普通の変数を宣言して実行してみよう!
うん!
NAME=みどり
この状態で
greet
スクリプトを実行するね!./greet
名前を入力して下さい: ▌
名前の入力が求められたね
NAME
変数はgreet
スクリプトでは使われていないね名前を入力して下さい: みどり
こんにちは、みどりさん!
次は
NAME
変数を環境変数にしよう!export NAME
今度は環境変数が設定されている状態で実行してみるね
./greet
こんにちは、みどりさん!
予想どおり!名前をたずねられずに挨拶されたよ!
export
を引数なしで実行すると現在定義されている環境変数一覧を表示してくれるよexport
今回は環境変数を学んだよ!
export
で環境変数を定義したり確認できるよ!呼び名 | 使える範囲 |
---|---|
変数 | 宣言されたシェルのみ |
環境変数 | 宣言されたシェルとその子プロセス |
一部のコマンドは環境変数で動作が変わるよこの説明は manpage の末尾に書いてあるで
man
で確認しよう