Como você organizaria a execução de um script de shell em um processo filho, enquanto ainda seria capaz de alterar o diretório atual do shell de chamada?
Responder1
Você não pode.
O ambiente do shell pai é copiado para o processo filho quando o filho é iniciado e, a partir desse ponto, eles são distintos e totalmente separados. O processo filho não poderá modificar diretamente o ambiente do pai.
A única maneira de a criança influenciar seus pais é enviar uma mensagem aos pais e os pais agirem de acordo com ela:
eval "$( bash -c 'echo "cd /"' )" # message through command string to stdout
ou
# message through USR1 signal triggers predefined action
trap 'cd /' USR1
bash -c 'kill -s USR1 "$PPID"'