Чтобы дать более подробную информацию, ситуация такова.
Я пытаюсь подготовить файлы модулей (то есть того типа, который используется в пакете environment-modules) для настройки среды и псевдонимов для стороннего программного обеспечения. Некоторые псевдонимы, в частности, вызывают у меня горе. Файлы ресурсов оболочки, предоставленные автором - которые я надеюсь уйти от среды, не зависящей от оболочки, и, следовательно, мой интерес к файлам модулей - устанавливают псевдонимы, которые включают буквальные фигурные скобки. Когда я пытаюсь поместить ту же строку в файл модуля, содержимое фигурных скобок раскрывается.
Похоже, что в csh/tcsh команда set-alias файла модуля обрабатывается и превращается в команду "alias", предложенную оболочкой. Затем это обрабатывается с помощью eval, как показано ниже:
eval `alias foo 'thing to alias foo to';`
(да, конечная точка с запятой является частью команды).
Я не могу обойтись ни одним из этих элементов - eval, отсутствием двойных кавычек вокруг вычисляемой строки или одинарных кавычек вокруг текста псевдонима - без компиляции пользовательской версии модулей, которую я не хочу делать.
Теперь, если псевдоним содержит фигурные скобки, я не вижу, как в контексте оператора eval защитить их, чтобы они не интерпретировались. Я пробовал обратную косую черту отсюда до Тимбукту, я пробовал двойные кавычки, я пробовал одинарные кавычки, я пробовал одинарные кавычки внутри двойных кавычек, я пробовал комбинации из вышеперечисленных. Пока что ничего не работает, и это граничит с абсурдом. Несмотря на обширный поиск в Google, я не смог найти никаких ответов.
Есть ли способ избежать фигурных скобок? Если нет, дайте мне знать, и я продолжу свою жизнь; Если это так, и это не требует перекомпиляции, я очень ценю любой совет. Спасибо!