내가 알아 내기 위해 노력하고있어. 내가 (마지막에 면책 조항을 생략하지 마십시오!) var
변수가 command
의 환경에 전달 될 것으로 예상하지만, 현재의 환경에 존재하지 않아야
먼저, bash는 그것을 시도하자한 줄의 설정 환경 변수 및 실행 명령에 diffferent 결과를 얻은 oneliner</p> <pre><code>var=value command </code></pre> <p>실제로 SH 어떻게 작동하는지, sh와 bash는
#bash
$ var= #just to be sure it's empty
$ var=value echo something
. something
$ echo "$var"
.
$ var=value set something
$ echo "$var"
.
현재로서는 예상대로 작동합니다. 그러나 우리가 sh에 가고 동일한 입력을 다시 입력 할 때, 그것은 그것과 같을 것입니다 :
그리고 마지막 하나는 다릅니다. set
명령에 sh의 특별한 경우가 있습니까? 변수 var
이 현재 환경에 저장되는 이유는 무엇입니까?
면책 조항 : 나는 echo
과 set
우리가 var=value command
으로 전달할 쉘 내장의 때문에 환경 변수가 낭비되는 것을 알고 있지만, 내 질문은 구문에 관한 것입니다. 내 말은, 그들은 이 일 것입니다,하지만, sh에서, 입력했을 때 set
, 변수는 어떻게 든 현재 환경으로 전달되었습니다.
우수 답변. 그냥 궁금 해서요.이 특별한 경우의 행동이 좋은 아이디어 인 이유를 생각해 볼 수 있습니까? var = value를 통해 특별한 경우없이 같은 결과를 얻을 수 있습니다. 무언가를 세워라. – John1024
쉘에 왜 영향을 미치는지 반드시 확신 할 수 없습니다. 특수 내장 명령으로 분류 된 명령은 효율성을 위해 선택적으로 내장되는 것보다는 셸에 영향을주는 명령이기 때문에 내장 명령이 필요하다는 점에 유의할 것입니다. 따라서 별도의 명령을 실행하지 않으므로 할당이 일시적이라는 것은 의미가 없습니다. – chepner