Как бы вы организовали выполнение скрипта оболочки в дочернем процессе, сохранив при этом возможность изменить текущий каталог вызывающей оболочки?
решение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"'