Seu script e especialmente seus comandos internos cd
funcionam bem quando chamados de bash
com o uso dos comandos source
ou equivalentes .
.
A questão principal é, como já foi dito em @adonis comment, o seu shell, depois de alterar corretamente seu diretório, irá sair a menos que um arquivo com o nome "* .cfg" exista, o que é muito duvidoso.
Como eu suponho que você queira usar * .cfg como um padrão, aqui está como eu modificaria um pouco seu script para que ele funcione como esperado:
#!/bin/bash # Note that the shebang is useless for a sourced script
model_dir=/mypath
chdir() { # use either function or (), both is a non portable syntax
cd $1
}
chdir ${model_dir}/config
if [ ! -s *.cfg ]; then # Single brackets here for the shell to expand *.cfg
echo $(date) "configure file does not exist"
exit 1 # dubious in a sourced script, it will end the main and only shell interpreter
fi