質問

謎解き:出力がパイプにリダイレクトされたときに cd が失敗する理由を誰でも説明できますか?

例:

james@machine:~$ cd /tmp                          # fine, no problem
james@machine:~$ cd /tmp | grep 'foo'             # doesn't work
james@machine:~$ cd /tmp | tee -a output.log      # doesn't work
james@machine:~$ cd /tmp >out.log                 # does work

OSX、Ubuntu、およびRHELで検証済み。

アイデアはありますか

編集 cd の出力をパイピングしているのは奇妙に思えますか?その理由は、任意のシェルコマンドをログエントリでラップし、出力を処理する関数によるものだからです。

役に立ちましたか?

解決

出力をリダイレクトすると、子シェルプロセスが生成され、子プロセスのディレクトリが変更されて終了します。出力をリダイレクトしない場合、組み込みのシェルコマンドであるため、新しいプロセスは生成されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top