• ベストアンサー

起動シェル内の「. 」について

アプリケーションサーバーの起動スクリプトに以下のような記述がありました。 この記述は現在のシェルのディレクトリを取得して、環境変数を設定するしシェルを呼び出す記述だと言うのは分かるのですが、最初の「. 」ドットスペースは何をしているのでしょうか? binDir=`dirname $0` . $binDir/setupCmdLine.sh

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

「.」はshの内部コマンドで、指定されたスクリプトファイルを 今実行しているシェル自身が読み込んで実行します。 あらたにシェルが起動することはありません。 ファイルが呼び出し元のシェルスクリプトファイルの中に取り込まれるような感じです。 「.」無し(./setupCmdLine.sh)で実行した場合、 指定されたファイルは子プロセスを起動してそのシェル上で実行されます。 この場合、それぞれのシェルスクリプトは別々のプロセスで実行されるので 子プロセスでの環境(環境変数、カレントディレクトリなど)の変更は、 親プロセスには引き継がれません。(ここが「.」がある場合と異なります。)

totmon
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • kmb01
  • ベストアンサー率45% (63/138)
回答No.2

man bashによると source filename [arguments] と同じです。

totmon
質問者

お礼

ありがとうございました。 補足で質問です。 シェルが置いてあるディレクトリでこのシェルを実行すると「.」になります。 もし一つ上の階層が「test」だとすると「./test」になります。 そうするとこのコマンドは . ./setupCmdLine.sh . ./test/setupCmdLine.sh となり「.」カレントディレクトリ パス/シェル名になるのですが。 この最初の「.」は何の役割があるのでしょうか? 宜しくお願い致します。

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

現在のディレクトリです。

totmon
質問者

お礼

ありがとうございました。