Unixシェルでは、ドットコマンド(.)と呼ばれる終止符は、現在の実行コンテキストでコンピュータファイル内のコマンドを評価するコマンドです。 [1] Cシェルでは、同様の機能がコマンドとして提供されており、[2]この名前は「拡張」POSIXシェルにも見られます。[3] [4]source
ドット コマンドは、ドットで始まる隠しファイルまたは隠しディレクトリであるドット ファイルと混同しないでください。また、コマンドを実行するための表記法と混同しないでください。これは、現在のディレクトリを指す相対パスです(Unix では '.' 文字で表記され、通常はPath 変数の外側にあります)。
./scriptfile
引数
ファイル名はドットコマンドの最初の引数です。この引数にスラッシュが含まれていない場合、シェルはPATH環境変数で定義されているすべてのディレクトリでファイルを検索します。PATHにも含まれる通常のコマンドとは異なり、ソースとなるファイルは実行可能である必要はありません。それ以外の場合、ファイル名はファイルへの単純なパスとみなされます。[1]
bash [3] 、 zsh [4]、ksh [5]などのいくつかの「拡張」シェルでは、 2 番目の引数にパラメータを指定できます。パラメータが指定されていない場合、ソース ファイルは現在のコンテキストで使用可能な位置パラメータのセットを受け取ります。パラメータが指定されている場合、ソース ファイルは指定されたパラメータのみを受け取ります。いずれの場合も、パラメータは現在のコンテキストの$0になります$0。
使用法
ソースファイルの実行は呼び出しコンテキストで行われるため、内部で変更された環境[注 1]は現在のプロセスまたは現在のシェルに適用されます。これは、別の環境を持つ新しい別のプロセス空間で実行される
shebangまたは asによって直接実行されるスクリプトとは大きく異なります。sh foo.sh
したがって、ドット コマンドを使用すると、大きなスクリプトを小さな部分に分割して、モジュール.bashrc設計を実現できる可能性があります。また、セッションの起動時に、やなどのユーザー プロファイル ファイルのソース指定がシェルによって実行されることもよくあります.profile。
source
sourceは、コマンドに続くファイルを、現在のコンテキストで実行されるコマンドのリストとして評価するシェル組み込みコマンドです。[6]多くの場合、「現在のコンテキスト」は、対話型セッション中にユーザーがコマンドを入力しているターミナルウィンドウです。
Bashや同様の POSIX 風シェルでは、ソース コマンドはドット( .)のみに省略できます。ただし、このコマンドが最初に登場した
C シェルでは、これは受け入れられません。
一部のBash スクリプトは、source your-script実行可能コマンドとして実行するのではなく、構文を使用して実行する必要があります。たとえば、スクリプトにディレクトリ変更( cd) コマンドが含まれており、スクリプトの完了後にスクリプトをそのディレクトリに残しておくことをユーザーが意図している場合や、スクリプトにエクスポートコマンドが含まれており、ユーザーが現在のシェルの環境を変更したい場合などです。別の使用状況としては、スクリプト ファイルに「実行」権限がない場合が挙げられます。スクリプト ファイル名を目的のシェルに渡すと、スクリプトは現在のコンテキストではなく
サブシェルで実行されます。
注記
- ^ POSIX.1:2013 のシェル実行環境を参照してください。
参考文献
- ^ ab "POSIX.1:2013 Shell Command Language § dot" . 2016年5月23日閲覧。
- ^ 「Csh man page#command」 。 2016年5月23日閲覧。
- ^ ab 「Bash リファレンスマニュアル § Bourne Shell 組み込み関数」 。2016年5 月 23 日閲覧。
- ^ ab 「ZSH シェル組み込みコマンド」 。2016年5 月 23 日閲覧。
- ^ 「ksh man page」。Oracle。2016年5 月 23 日閲覧。
+。name [arg ...]
- ^ 「BASH BUILTIN COMMANDS」、Bash-3.0 の「source」の Linux マニュアル ページ。2004 年 4 月 20 日
外部リンク
- Unixにおけるドットの3つの異なる用途の説明
