O exemplo do bash na questão parece ter sido corrigido - embora seja muito estranho chamar um arquivo executável ".exe" em um sistema GNU / Linux, não é?
Se você não precisa que o arquivo de saída seja um executável, sugiro fazer
cobc -free $1
cobcrun $(basename "$1")