プロセスは論理および物理作業ディレクトリを継承しますか?

プロセスは論理および物理作業ディレクトリを継承しますか?

プロセスが開始されると、親プロセスの作業ディレクトリを継承することがわかります。しかし、論理作業ディレクトリと実際の作業ディレクトリの両方を継承しますか、それとも実際の作業ディレクトリのみを継承しますか?

答え1

まあ。 「論理」作業ディレクトリは環境変数に含まれていますPWDenviron(7)「一部のシェルによって設定」されたと言うので、明らかにアプリケーションによって異なります。もう一つの質問は、他のプログラムがそれを読むかどうかです。

/tmp$ ln -s ~ link  
/tmp$ cd link  
/tmp/link$ bash -c "pwd"
/tmp/link
/tmp/link$ zsh -c "pwd" 
/home/itvirta
/tmp/link$ dash -c "pwd"
/tmp/link

Bashはdashこれを信頼しているようですが、zshそうではありません(私のシステムでは設定可能であると確信しています)。

答え2

これcwdのインポートシステムコールは、次の物理パス名を返します。POSIX規制

パス名には、ドット、ドットポイント、またはシンボリックリンクコンポーネントを含めないでください。

Linuxは、CWDを渡すために名前より低いレベルのメカニズムを使用しているようです。これは、他のプログラムがディレクトリを CWD として使用している間にディレクトリの名前を変更できるためです。

関連情報