Para dar mais detalhes, a situação é essa.
Estou tentando preparar modulefiles (ou seja, do tipo usado pelo pacote environment-modules) para configurar ambiente e aliases para software de terceiros. Alguns dos apelidos, em particular, estão me dando tristeza. Os arquivos de recursos do shell fornecidos pelo autor - que eu espero fugir e para um ambiente de agnóstico de shell, daí meu interesse em modulefiles - definem aliases que incorporam chaves literal. Quando tento colocar a mesma string no modulefile, o conteúdo das chaves é expandido.
Parece que, em csh / tcsh, o comando set-alias do modulefile é processado e transformado no comando "alias", conforme oferecido pelo shell. Isso é então processado usando eval, da seguinte maneira:
eval 'alias foo 'thing to alias foo to';'
(sim, o ponto e vírgula final faz parte do comando).
Eu não consigo me afastar de nenhum desses elementos - o eval, a falta de aspas duplas em torno da string avaliada ou as aspas simples ao redor do texto do alias - sem compilar uma versão personalizada dos módulos, que eu odeio fazer.
Agora, se o alias contiver chaves, não vejo como, no contexto de uma declaração eval, protegê-las para que não sejam interpretadas. Eu tentei barras invertidas daqui para Timbuktu, eu tentei aspas duplas, eu tentei aspas simples, eu tentei aspas simples entre aspas duplas, eu tentei combinações do acima. Até agora, nada funcionou e está chegando ao absurdo. Apesar do extenso pesquisamento, não consegui encontrar nenhuma resposta.
Existe uma maneira de escapar das chaves? Se não, avise-me e continuarei com a minha vida; se assim for, e não envolve qualquer recompilação, eu apreciaria muito qualquer conselho. Obrigado!