このようなスクリプトを実行することの違いは何ですか:
./ test.sh
次のようなスクリプトを実行します:
。 test.sh ?
簡単な2行のスクリプトを試して、違いがあるかどうかを確認しました。
#!/bin/bash
ls
しかし、両方の。 test.sh および./test.sh 同じ情報を返しました。
承認された回答:
./ test.sh test.shを実行します 別のプログラムとして。ファイルtest.shの場合、bashスクリプトである可能性があります。 #!/ bin / bashで始まります 。しかし、それはまったく別のものである可能性があります。
。 ./test.sh ファイルtest.shのコードを実行します bashの実行中のインスタンス内。コンテンツファイルtest.shのように機能します の代わりにテキストで含まれていました。 ./test.sh ライン。 (ほとんど: $ BASH_LINENO の値など、異なる詳細がいくつかあります 、および returnの動作 組み込み。)
source ./test.sh と同じです。 ./test.sh bashで(他のシェルでは、 source わずかに異なるか、まったく存在しない可能性があります。 。コード> 含めるためのPOSIX標準に含まれています。
./ test.shを使用して別のスクリプトを実行する場合の最も一般的な違い 。を含むスクリプトを含める 組み込みの場合、 test.sh スクリプトはいくつかの環境変数を設定し、別のプロセスでは子プロセスの環境のみが設定されますが、スクリプトを含めると、唯一のシェルプロセスの環境が設定されます。 foo =barという行を追加した場合 test.shで およびecho$ foo 呼び出し元のスクリプトの最後に、違いがわかります。
$ cat test.sh
#!/bin/sh
foo=bar
$ ./test.sh
$ echo $foo
$ . ./test.sh
$ echo $foo
bar