子プロセスで現在のディレクトリを変更する

子プロセスで現在のディレクトリを変更する

シェルが呼び出される現在のディレクトリを変更し続けることができますが、シェルスクリプトが子プロセスで実行されるようにどのように準備できますか?

答え1

あなたはできません。

子プロセスが開始されると、親シェルの環境が子プロセスにコピーされ、その時点からそれらは互いに区別され、完全に独立しています。子プロセスは、親プロセスの環境を直接変更することはできません。

子供が親に影響を与える可能性がある唯一の方法は、親にメッセージを送信し、親に行動を起こさせることです。

eval "$( bash -c 'echo "cd /"' )"  # message through command string to stdout

または

# message through USR1 signal triggers predefined action

trap 'cd /' USR1
bash -c 'kill -s USR1 "$PPID"'

関連情報