LoginSignup
34
16

More than 5 years have passed since last update.

環境変数について

Last updated at Posted at 2016-03-01

さきにまとめ

  • シェル変数は別プロセスには引き継げない
  • 環境変数は親プロセスから子プロセスへ引き継げる
  • 子プロセスから親プロセスへ引継ぐ場合は、親プロセス側で「source」コマンドを実施する

親プロセスから子プロセスへの引継ぎ

親プロセスでシェル変数 hoge 作成

$ hoge='hoge'
$ echo $hoge
hoge

こういうシェルがあるとして、

$ cat child.sh
#!/bin/sh
echo $hoge

実行してもシェル変数は子プロセスでは表示されない

$ ./child.sh
# 何も表示されない

そのかわりシェル変数を環境変数にすると、

$ export hoge

子プロセスでも表示される

$ ./child.sh
hoge # 表示される

子プロセスから親プロセスへの引継ぎ

子プロセスで環境変数 fuga を作成

$ cat child.sh
#!/bin/sh
echo $hoge

fuga='fuga'
export fuga

そのままだと親プロセスでは表示されない

$ echo $fuga
# 何も表示されない

そこで source コマンドを実行

$ source child.sh
hoge

子プロセスで作成した環境変数が親プロセスでも表示される
source コマンドを実行することで、child.sh の内容が同じプロセス上で実行されることになるので、ただしく表示される

$ echo $fuga
fuga
34
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
16