Portanto, o script funciona bem quando você o "fonte" (usando ". command"), mas não quando você o executa (usando "./command").
A primeira coisa a verificar é a permissão. Certifique-se de que tem permissões executáveis.
A outra coisa que eu encontrei, que freqüentemente corrige esse tipo de situação, é marcar o arquivo como um script, inserindo o seguinte como a linha mais alta do arquivo:
#!/bin/sh
Naturalmente, se você usar algum recurso específico do shell, deverá especificar qual shell alternativo usar.