Você tem seus comandos dentro de aspas. Isso faz com que seu shell trate cd ~/projects/practice/ocaml
como um nome de comando. Como você não tem esse comando, ele imprime esta mensagem de erro. Os arquivos podem conter espaço em seu nome para que você possa ter um comando que tenha espaço no nome. Se você gostaria de executá-lo, uma maneira de fazer isso seria usar aspas como você fez.
Mas você quer que seu shell execute o comando cd
e dê o caminho como argumento. Apenas aspas remotas e deve estar funcionando bem.
Se você deve ou não usar a instrução break
no seu script depende do que você deseja fazer depois de alterar o diretório. Se você quiser deixar o loop, então você deve usá-lo.
Observe que o comando cd
no script de shell não mudará o diretório atual depois de executar este script. Ele afetará apenas o diretório atual dentro do script (a menos que você use source
em vez de executá-lo) desde quando você executa o script, novo processo é criado e cd
afeta apenas o diretório atual nos processos atual e filho, não no pai um.