通常、次のように接頭辞を付けることで、コマンドの環境変数を設定できます。
hello=hi bash -c 'echo $hello'
また、変数を使用して、次のようなコマンド呼び出しの任意の部分を置き換えることができることも知っています。
$ cmd=bash
$ $cmd -c "echo hi" # equivalent to bash -c "echo hi"
環境変数を設定するコマンドの前に変数を使用できないことを知って、私は非常に驚きました。テストケース:
$ prefix=hello=hi
$ echo $prefix # prints hello=hi
$ $prefix bash -c 'echo $hello'
hello=hi: command not found
変数を使用して環境変数を設定できないのはなぜですか?プレフィックス部分は特別な部分ですか?前にevalを使用することで機能させることができましたが、それでも理由がわかりません。bash 4.4を使用しています。
env
代わりに使用できますeval
。IIRCはより安全ですが、遅いです。