。バックグラウンドで実行されるコマンドのコマンドライン引数として

。バックグラウンドで実行されるコマンドのコマンドライン引数として

私は走るgrep some-string -r . &。 bkgで実行すると、cd別のディレクトリに移動します。grepハードリンクが異なるように解釈されるようです.。現在のディレクトリを変更する前後に何が起こりますか?元のディレクトリと新しいディレクトリが不完全にチェックされますか?

.コマンドであるコマンドライン引数は、コマンド実行開始時にのみ逆参照されるのか、プログラムの実行中に使用されるたびに逆参照されるのか疑問に思います。

答え1

各プロセスには、プロセスの外部で変更できない独自の「現在の作業ディレクトリ」があります。

だからあなたがするとき

grep some-string -r . &

シェルがgrepバックグラウンドで開始され、grep現在の作業ディレクトリがシェルと同じ値で初期化されます。その瞬間。ここでgrep定義されているのは、.他のディレクトリではなく、独自の現在のディレクトリです。シェルは引数の解釈に参加しません。

後でシェルディレクトリを変更してもcd影響はありませんgrep

関連情報