Um truque que eu uso para a estrutura de criação de subpacotes para um produto é usar um sub-shell.
Para o bash, você pode criar um script de shell como este:
#!/bin/bash
export PROJECT_DIRECTORY=$(pwd)
exec bash --rcfile $HOME/.project-bashrc
Então, em $HOME/.project-bashrc , você coloca algo assim:
source $HOME/.bashrc
export HISTFILE="${PROJECT_DIRECTORY}/.bash_history"
cd "${PROJECT_DIRECTORY}"
Isso também permite personalizar o prompt no arquivo .project-bashrc , o que pode ser útil.
Não sei como fazer o mesmo em zsh . Você teria que substituir a variável ZDOTDIR , eu acho. Mas seria semelhante.
Ciao!