foo=bar가 foo=bar와 다른 이유는 무엇입니까? [복사]

foo=bar가 foo=bar와 다른 이유는 무엇입니까? [복사]

이 명령의 공백은 어떻게 해석됩니까 foo= bar?

설명 이 왜 foo=bar다른 가요?foo= bar

예(우분투 배시)

developer@1604:~$ foo=bar
developer@1604:~$ foo= bar
The program 'bar' is currently not installed. You can install it by typing:
sudo apt install bar

답변1

구문은 다음과 같습니다. Bash 변수는 할당 연산자 바로 뒤에 오는 값으로 초기화됩니다 =. 여기에 문제가 있습니다…

이렇게 하면 foo= bar변수에 빈 문자열을 할당한 foo다음 명령을 실행합니다 bar.

답변2

이렇게 하면 foo= bar환경 변수에 빈 문자열을 할당한 foo다음 명령을 실행합니다 bar. 환경 변수를 새로운 실행에 전달하는 데 사용할 수 있습니다.

왜 다른가요?

공백은 구분 기호입니다(사물을 구분하는 데 사용됨). 공백을 추가하면 두 가지가 foo=됩니다 bar. 첫 번째는 할당이고, 두 번째는 bash에게 파일을 찾아 실행하라고 지시합니다. 첫 번째 항목은 선택 사항이므로 일반적으로 두 번째 항목만 표시됩니다. 두 번째 것은 선택 사항이 아닙니다. 할당만 표시되는 경우 약간 다른 작업을 수행하며 쉘 변수(앞에 하나가 오지 않는 한 환경 변수가 아님 export)에 할당됩니다.

답변3

foo= bar: 명령을 실행하기 전에 bar할당된 값은 foo비어 있습니다. 올바른 접근 방식은 foo=bar변수 이름과 할당 뒤에 공백을 피하는 것입니다.

답변4

쉘 linux/unix 명령에서 를 입력하면 foo=bar문자열 bar를 foo변수에 넣습니다. 확인하려면 echo $foo반환되어야 하는 내용을 입력할 수 있으며 bar이것이 foo변수에 포함된 내용 입니다.

공백을 입력하면 foo= bar쉘 인터프리터는 PATH 변수를 통한 응용 프로그램 명령으로 foo 변수 및 핸들 막대에 아무 것도 배치하지 않습니다. 쉘이 PATH 변수에서 bar 명령을 찾지 못하고 Ubuntu 배포판을 사용하고 있으므로 bar 응용 프로그램을 설치할 것인지 묻는 메시지가 나타납니다. 이는 애플리케이션을 찾을 수 없을 때 나타나는 메시지일 뿐입니다. 다음 명령을 사용하여 PATH 변수를 확인할 수 있습니다 echo $PATH. 이 시스템 변수에 대한 추가 정보여기

관련 정보