シェルスクリプトを実行するときにピリオド(ドット)をつける理由
小粋空間 » Linux » シェルスクリプトを実行するときにピリオド(ドット)をつける理由
シェルスクリプトを実行するときにピリオド(ドット)をつける理由を紹介します。
1.はじめに
次のようなスクリプト(foo.sh)があるとします。
#!/bin/bash
foo=123
echo $foo
このスクリプトを実行するとき、コマンドラインに次のように先頭にピリオド(ドット)を単独で入力します。
[hoge@server123 ~]$ . ./foo.sh
なぜ先頭にピリオドを入力するのか、意味が分かりません。
2.先頭に入力したピリオド(ドット)の意味
先頭のピリオドをつけずにスクリプトを実行した場合、新たなシェルが起動し、そこからこのスクリプトが起動され、スクリプトが終了すると起動した新たなシェルも終了します。
が、ドットコマンドでスクリプトを起動すれば、新たなシェルは起動せずカレントシェルからこのスクリプトを起動します。
何が便利かというと、たとえばスクリプトで設定した変数をカレントシェルに引き継ぎたい場合です。
冒頭のスクリプトをドットコマンドをつけずに実行すると次のような結果になります。
[hoge@server123 ~]$ ./foo.sh
123
[hoge@server123 ~]$ echo $foo
(何も表示されない)
これをドットコマンドで実行すると次のようにカレントシェルに変数が引き継がれます。
[hoge@server123 ~]$ . ./foo.sh
123
[hoge@server123 ~]$ echo $foo
123
なお、ピリオドの代わりにsourceでも同じ効果があるようです。