![エクスポートを使用して環境変数を設定する場合、「.」と「./」の違いは何ですか? [コピー]](https://linux33.com/image/36783/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81%E3%80%8C.%E3%80%8D%E3%81%A8%E3%80%8C.%2F%E3%80%8D%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私が尋ねたときに明確ではなかった場合は、許してください。私は質問をするときに非常に明確にしようとします。
組み込みLinuxについて学びながら、プロジェクトのための環境を設定しています。次のような環境を設定するシェルスクリプトを作成しました。
export PROJECT=example-sys
export PRJROOT=/home/karim/${PROJECT}
export TARGET=powerpc-linux
export PREFIX=${PRJROOT}/tools
export TARGET_PREFIX=${PREFIX}/${TARGET}
export PATH=${PREFIX}/bin:${PATH}
cd $PRJROOT
スクリプトをprjenv.sh
。./xyz.sh
./abc
./prjenv.sh
export -p
. prjenv.sh
その後、スクリプトを実行した後に環境変数を設定する必要があることがわかりました。
.
./
どちらをいつ使用し、違いが何であるかを知ることができますか?
より多くの情報が必要な場合はお知らせください。
PS:Linuxを初めて使用するため、私が使用している技術用語の一部が間違っている場合はお詫び申し上げます。
答え1
./script
script
現在ディレクトリにあるファイルは.
新しいプロセスとして実行されます。
. script
引数を使用してシェル関数.
(別名)を呼び出します。これは、含まれているすべての行を現在のシェルに入力するのとほぼ同じです。source
script
変数は新しいプロセスに対してのみ設定されるため、最初のオプションを使用して変数を設定することはできません。変数は親から子にのみエクスポートでき、その逆はエクスポートできません。 (つまり、呼び出されたプロセスは現在のプロセスの変数を変更できません。)