일반적으로 다음과 같이 접두어로 명령에 대한 환경 변수를 설정할 수 있습니다.
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이 더 안전하지만, 느린이다.