シェルスクリプトを実行するときにピリオド(ドット)をつける理由

シェルスクリプトを実行するときにピリオド(ドット)をつける理由

Posted at October 19,2015 12:33 AM
Tag:[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でも同じ効果があるようです。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)