이 명령의 공백은 어떻게 해석됩니까 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
. 이 시스템 변수에 대한 추가 정보여기