いくつかの環境変数を設定した後、サブシェル内でコマンドを実行するシェル関数があります。
$ with-env-overrides git status
サブシェルで使用して実装されてeval
います
with-env-overrides() {
(
source $HOME/.env-overrides
eval "$@"
)
}
これは、エイリアスとシェル関数を利用できることを意味します。
$ with-env-overrides gs
残念ながら、引数にスペースやシェルのメタ文字が含まれている場合、eval は混乱します。
$ with-env-overrides grep "foo bar" /etc/passwd
grep: bar: No such file or directory
eval
を使用せずに、エイリアスなどを使用する機能を失うことなく、どうすればこれを達成できますか?