1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

source(.)の使い方

Last updated at Posted at 2018-05-11

検証手順

前提:
①現シェル環境でnumberを1に設定
②子プロセスでnumberを確認してから2に変更
※スクリプトは下記ファイルを使用

sub.sh
[pirlo@minidns ~]$ cat sub.sh
echo number=$number  //numberが定義されているかを確認
number=2         //サブシェル環境でnumberを2に変更
echo number=$number  //更新後のnumberを表示
[pirlo@minidns ~]$

確認開始

//現シェル環境のnumberを確認
[pirlo@minidns ~]$ echo $number
1

//子プロセスのシェル環境でnumberが定義されていないことを確認でき、2に設定
[pirlo@minidns ~]$ ./sub.sh
number=
number=2

//現シェル環境に戻ってから再度numberを確認し、子プロセスの影響がないことを確認
[pirlo@minidns ~]$ echo $number
1

//bashではなくsourceでスクリプトを実行。bashと異なり、最初の確認ではnumberが取得できた
[pirlo@minidns ~]$ source sub.sh
number=1
number=2

//再度numberを取得して、変更されていることを確認
[pirlo@minidns ~]$ echo $number
2
[pirlo@minidns ~]$

結論

・sourceでの実行は、実行されたスクリプトの中身を現シェル環境にコピーして実行すると考えて良さそう
・bashでの実行は、新規のシェル環境でスクリプトが実行され、独自のシェル変数を持ち、親シェル環境からシェル変数を継承せず、自分のシェル変数も親シェル環境へ反映しないらしい。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?