Seu programa faz exatamente o que você diz: ele altera o diretório de trabalho propriamente dito para /home/enedil/projects/algo
. Mas assim que sair, o diretório de trabalho do shell será restaurado.
Eu acho que o que você deseja alcançar é alterar o diretório de trabalho do processo pai, ou seja, o shell, sem recorrer a um simples cd
. Existe um método , mas como seu autor diz: não faça isso.