आम तौर पर, यह उपसर्ग लगाकर एक कमांड के लिए एक पर्यावरण चर सेट करना संभव है:
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
मैं एक चर का उपयोग करके पर्यावरण चर को क्यों सेट नहीं कर सकता हूं? क्या उपसर्ग भाग एक विशेष भाग है? मैं सामने वाले ईवैल का उपयोग करके इसे प्राप्त करने में सक्षम था, लेकिन मुझे अभी भी समझ नहीं आया कि क्यों। मैं bash 4.4 का उपयोग कर रहा हूं।
env
इसके बजाय उपयोग कर सकते हैंeval
, जो IIRC अधिक सुरक्षित है, लेकिन धीमा है।