
スクリプトを実行するには ./script.ksh と入力しますが、最初にデータベースに接続するには、次のパスを入力します。. /
$ . /home/sqllib/db2profile
$ db2
家に帰る前になぜ. /
使用しますか?
答え1
パス名で見つかった内容は.
コマンドとは関係ありません.
。
.
すべてのディレクトリに存在し、現在のディレクトリを指定する特殊ファイル名。したがって./script.ksh
、現在のディレクトリにファイルを指定するscript.ksh
などの操作を実行します././script.ksh
(./././script.ksh
パス名パーサに現在のディレクトリからそれ自体、それ自体、およびそれ自体に移動するように要求する回数は重要ではありません...)。他の理由の中で、./script.ksh
単にscript.ksh
シェルコマンドではなくパス名を意味することを示すために代わりに使用します。
.
また、シェルが外部コマンドとして実行されるのではなく、シェルの現在の環境に引数として提供されているファイルの内容を取得するシェル組み込みコマンドです。コマンドは複数のシェルからスペルを入力する.
こともできますsource
(これは従来の互換性エイリアスに由来しますcsh
)。これはシェルコマンド(単一の句読点で構成される:
)なので、常にスペースが続きます。
答え2
この場合、.
シェルは/home/sqllib/db2profile
スクリプトを実行するために新しいシェルプロセスを開始するのではなく、現在のシェルプロセスのコンテキストで次のスクリプト(この場合)を実行するように指示されます。
その理由は、名前に続くスクリプトが.
他のプログラムに必要な環境変数を生成できるためです。名前の前にシェルスクリプトがないと、.
スクリプトを実行するための新しいプロセスが開始されるため、スクリプトが完了し、そのプロセスが終了すると、スクリプトによって生成されたすべての環境変数が失われます。スクリプトの前に配置すると、.
スクリプトは現在のシェルプロセスによって実行されるため、スクリプトによって生成されたすべての環境変数は現在のシェルのコンテキストで生成されるため、これらの環境変数は後で実行されるスクリプトおよびプログラムで使用できます。db2
次の行のコマンドのようなものです。