「。」の違いを探していました。 「source」組み込みコマンドといくつかのソース(例: this ディスカッション、およびbashマンページ)は、これらが同じであることを示唆しています。
しかし、環境変数の問題に続いて、テストを実施しました。次を含むファイルtestenv.sh
を作成しました。
#!/bin/bash
echo $MY_VAR
コマンドプロンプトで、次を実行しました。
> chmod +x testenv.sh
> MY_VAR=12345
> ./testenv.sh
> source testenv.sh
12345
> MY_VAR=12345 ./testenv.sh
12345
[最初のフォームが空の文字列を返したことに注意してください]
したがって、この小さな実験は、is違いがあることを示唆しています。「ソース」コマンドの場合、子環境は親からすべての変数を継承します1つは、「。」そうではありません。
私は何かを見逃していますか、これはbashの文書化されていない/非推奨の機能ですか?
[GNU bash、バージョン4.1.5(1)-release(x86_64-pc-linux-gnu)]
はい、あなたは何かを見逃しています。
「。」を混同していると思います。 ./testenv.sh
と '。'のように、現在のディレクトリを意味しますつまり、 source
(これは組み込みコマンドです)。したがって、「。」の場合source
は. ./testenv.sh
になります。理にかなっていますか?
だからこれを試してください:
MY_VAR=12345
. ./testenv.sh