在设置一些环境变量后,我有一个 shell 函数,它在子 shell 中执行命令,例如
$ with-env-overrides git status
它是eval
在子外壳中实现的
with-env-overrides() {
(
source $HOME/.env-overrides
eval "$@"
)
}
这意味着我可以使用别名和 shell 函数,例如
$ with-env-overrides gs
但不幸的是,当参数包含空格或 shell 元字符时,eval 会感到困惑,例如
$ with-env-overrides grep "foo bar" /etc/passwd
grep: bar: No such file or directory
我怎样才能在不使用的情况下实现这一点eval
,但又不会失去使用别名等的能力?