проблема с оболочкой:псевдоним не расширяется
Вопрос
У меня следующая проблема:У меня есть много тестовых сценариев, которые в настоящее время выполняются с использованием Инструментарий МКС.Нам удалось запустить эти сценарии с помощью оболочка mingw (msys) но есть и другие сценарии, которые используют некоторые alias
es, которые встроены в MKS Toolkit, а не в bash.
Проблема в том, что никто не хочет изменять эти сценарии, даже автоматически с помощью сценария.Это означает, что я должен определить и использовать эти псевдонимы.Я попытался определить псевдонимы в файле «/etc/profile» оболочки msys, но безуспешно.Я также пытался использовать shopt -s expand_aliases
(в «/etc/profile»), но это тоже не работает.
Может кто-нибудь поделиться идеей, как это можно сделать.Имейте в виду, что существующие сценарии должны остаться прежними.
Любые мысли и идеи приветствуются.
Спасибо
Решение 2
Этот ответ дал мне решение.Он включает в себя определение переменной BASH_ENV
перед выполнением
bash script_name.sh
BASH_ENV будет указывать на скрипт, который устанавливает среду оболочки.В моем случае для экспорта alias
es, а также необходимые функции, скрипт выглядит так:
shopt -s expand_aliases
alias my_alias="echo my_alias"
function MyFunction {
echo "MyFunction(DUMB):" $*
}
export -f MyFunction
Другие советы
Генеракодицетагкод устанавливается только для входа в систему оболочки.Если вы хотите псевдонимы в вашем скрипте, вы должны поставить их в отдельный файл и истощить их в сценарий (ы), которые их нуждаются.Например:
<Сильные> псевдонимы.sh :
alias walrus="echo coo coo cah joo"
.
<Сильный> Сценарий :
#!/bin/bash
shopt -s expand_aliases
. aliases.sh
walrus
.
а затем
$ ./script.sh
coo coo cah joo
.
Это, вероятно, самый разумный способ сделать это.Если вы настаиваете на том, чтобы не меняться скрипты вообще , то вы сможете уйти с выполнением их косвенно, как:
bash --rcfile aliases.sh -i script.sh
.
Это скажет bash для выполнения интерактивной оболочки (и, таким образом, расширить псевдонимы и источник наших псевдонимов перед выполнением сценария).