Você está usando o comando source
errado. Eu estou supondo que você tenha um arquivo chamado myscript
que contém esses comandos. Em vez de ter coisas para gerar os comandos certos no arquivo, como este
echo 'alias foo="bar -param"'
você deve ter apenas os comandos, como este
alias foo="bar -param"
Em seguida, você passa o script diretamente para o comando source
, que o executa no shell atual para que as alterações feitas no script sejam refletidas na sessão atual do shell:
source myscript
Além disso, o comando .
é equivalente:
. myscript
(Observe que há um espaço entre o .
e o myscript
.)
Atualizar
Em resposta ao seu comentário: você deve apenas usar um arquivo. Como o nome de um alias pode ser definido usando um valor variável, basta adicionar a lógica no arquivo para fazer todos os aliases dinâmicos. Aqui está um exemplo super simples:
$ foo=hello
$ alias $foo='echo hi'
$ hello
hi
Você pode usar condições, loops, etc. para criar uma lógica muito mais complexa para seus aliases dinâmicos.