Não há nada de errado em deixar o script alterar seu diretório de trabalho, se ele precisar ser executado com um diretório de trabalho específico (devido a ele usando caminhos relativos ou o que ele faz).
A única coisa que alguém pode querer fazer é sair com um status de saída diferente de zero se o cd
falhar:
cd /root/demoproject || exit 1
Você também pode alterar o diretório no script, dependendo do valor de uma variável de ambiente:
cd "${MY_WORK_DIR:-/root/demoproject}" || exit 1
Isso mudaria o diretório de trabalho para o diretório fornecido por MY_WORK_DIR
, mas seria o padrão para /root/demoproject
se essa variável estiver vazia ou não definida.