1

シェル スクリプトを実行するには、次の 2 つのオプションがあります。

$ ./some/script.sh

$ . ./some/script.sh

私が理解している限り、最初のものは、スクリプト内の指定されたシバン行に基づいて新しいシェル環境を開始します。2 つ目は、同じシェル環境内でステートメントを実行します。

もっと違いはありますか?

2 番目のものに関する詳細なドキュメントはどこにありますか?

.本当のコマンドですか?そのマンページが見つかりません。

4

3 に答える 3

4

もっと違いはありますか?

問題の要点は、スクリプトを使用すると、同じプロセスで.行ごとに実行されることです。それ以外の場合、新しいプロセスがフォークされます。また、別のプロセスには親を変更する方法がありません。たとえば、現在のディレクトリなどの環境変数を変更することはできません。

2 番目のものに関する詳細なドキュメントはどこにありますか?

[cnicutar@fresh ~]$ help source
source: source filename [arguments]
...

は 。本当の命令

[cnicutar@fresh ~]$ type .
. is a shell builtin

まだ明らかではなく、.同一でsourceある場合*。


ラッシュがコメントしsourceたように、POSIX で指定されていないため.、移植性を目的としたコードで使用する必要があります。ドットは第 2 章で指定されています。

于 2012-08-13T19:24:46.460 に答える
1

.ファイルを読み取り、ファイル内のコマンドを実行するための Bourne Shell コマンドである場合、分析は本質的に正しいです。bash およびその他のシェルはsource、 のエイリアスとして追加し.ます。

bash builtinsについてはマニュアルを参照し、 Bourne sh builtins.についてはマニュアルの上部を参照してください。

現在のシェル コンテキストで filename 引数からコマンドを読み取り、実行します。filename にスラッシュが含まれていない場合、PATH 変数を使用して filename を検索します。Bash が posix モードでない場合、ファイル名が $PATH に見つからない場合、現在のディレクトリが検索されます。引数が指定されている場合、それらは filename が実行されたときに位置パラメーターになります。それ以外の場合、位置パラメーターは変更されません。戻りステータスは、最後に実行されたコマンドの終了ステータス、またはコマンドが実行されていない場合はゼロです。filename が見つからないか読み取れない場合、返されるステータスはゼロ以外です。このビルトインは source と同等です。

于 2012-08-13T19:25:34.003 に答える
0

環境を調達するために使用されます。.profileなど。

于 2012-08-13T19:22:42.557 に答える