Biasanya, dimungkinkan untuk mengatur variabel lingkungan untuk suatu perintah dengan mengawalinya seperti ini:
hello=hi bash -c 'echo $hello'
Saya juga tahu bahwa kita bisa menggunakan variabel untuk mengganti setiap bagian dari permintaan perintah seperti berikut:
$ cmd=bash
$ $cmd -c "echo hi" # equivalent to bash -c "echo hi"
Saya sangat terkejut mengetahui bahwa Anda tidak dapat menggunakan variabel untuk mengawali perintah untuk mengatur variabel lingkungan. Kasus cobaan:
$ prefix=hello=hi
$ echo $prefix # prints hello=hi
$ $prefix bash -c 'echo $hello'
hello=hi: command not found
Mengapa saya tidak bisa mengatur variabel lingkungan menggunakan variabel? Apakah awalan merupakan bagian khusus? Saya bisa membuatnya bekerja dengan menggunakan eval di depan, tetapi saya masih tidak mengerti mengapa. Saya menggunakan bash 4.4.
env
bukaneval
, IIRC mana yang lebih aman, tetapi lebih lambat.