У меня есть функция-оболочка, которая выполняет команду внутри суб-оболочки после установки некоторых переменных среды, например.Как я могу выполнить shell-скрипт в под-оболочке Bash?
$ with-env-overrides git status
Это реализовано с использованием eval
в суб-оболочки
with-env-overrides() {
(
source $HOME/.env-overrides
eval "[email protected]"
)
}
это означает, что я могу использовать псевдонимы и оболочки-функции, например,
$ with-env-overrides gs
, но, к сожалению, eval запутывается, когда аргументы содержат пробелы или метасимволы оболочки, например.
$ with-env-overrides grep "foo bar" /etc/passwd
grep: bar: No such file or directory
Как я могу добиться этого без использования eval
, но без потери возможности использовать псевдонимы и т.д.?
То, что я хотел бы предложить. – Samveen
Хмм, к сожалению, я не могу использовать псевдонимы с помощью этого метода. –
@MikeWilliams: Это правильно. Псевдонимы очень ограничены и имеют ряд странностей. Один из них заключается в том, что они действуют скорее как встроенные, чем команды, поэтому вы не можете процитировать их или построить из двух строк или развернуть параметр, чтобы вызвать его. Вместо этого используйте функции оболочки. – rici