0

いくつかの環境変数を設定した後、サブシェル内でコマンドを実行するシェル関数があります。

$ 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を使用せずに、エイリアスなどを使用する機能を失うことなく、どうすればこれを達成できますか?

4

1 に答える 1