env_variable=value && 명령은 정확히 무엇을 수행합니까?

env_variable=value && 명령은 정확히 무엇을 수행합니까?

다음과 같이 환경 변수를 앞에 추가하여 명령에 전달할 수 있다는 것을 알고 있습니다.

env_variable=value command

그런데 오늘 실수로 &&변수와 명령 사이에 다음을 추가했습니다.

env_variable=value && command exactly
                    ^
                    ^

올바른 접근 방식과 어떻게 다른지 궁금합니다. 를 사용하여 명령을 함께 연결할 수 있다는 것을 알고 있습니다 &&.그런데 흥미로운 점은 명령이 변수를 수신하지 않는다는 것입니다. 이유는 무엇입니까?누군가 두 번째 변형이 첫 번째 변형과 정확히 어떻게 다른지, 그리고 왜 명령에 변수가 표시되지 않는지 설명할 수 있다면 감사하겠습니다. 감사해요

답변1

foo=bar && somecmd

거의 같습니다(작업이 실패할 가능성이 적으므로).

foo=bar; somecmd

(별도의 줄에)와 동일

foo=bar
somecmd

그러면 명명된 쉘 변수에 값이 할당되고 foo명령이 실행됩니다 somecmd. ed foo가 아닌 경우 export(기본적으로 쉘 변수는 아님) 에 표시되지 않지만 somecmd동일한 쉘에서 사용할 수 있습니다.

예를 들어 참조하십시오.

답변2

이전 명령이 모두 성공적으로 실행되는 경우 &&를 통해 명령을 한 줄로 연결하여 순차적으로 실행할 수 있습니다. 각각은 있는 그대로 셸 내에서 실행되며 셸을 수정하지 않습니다. 따라서 각 프로세스는 실행되는 셸에서 환경 변수를 얻습니다.

$ LC_ALL=C && commandB

--> LC_ALL=C 실행, 쉘에 0이 반환되면 commandB 실행(기본 쉘 환경 사용)

$ LC_ALL=C commandA

--> LC_ALL 변수를 C로 설정하고 commandA를 실행하여 환경을 변경합니다(이 명령을 효과적으로 실행).

관련 정보