![할당에 공백이 있어도 인용되지 않은 $PATH가 안전한 이유는 무엇입니까? [복사]](https://linux55.com/image/134869/%ED%95%A0%EB%8B%B9%EC%97%90%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%EC%9E%88%EC%96%B4%EB%8F%84%20%EC%9D%B8%EC%9A%A9%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%24PATH%EA%B0%80%20%EC%95%88%EC%A0%84%ED%95%9C%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
다음은 어디에서 왔는가https://unix.stackexchange.com/a/154290/674의미는?
일반적으로 zsh 이외의 쉘에서는 값에 공백이나 기타 특수 문자가 포함되어 있으면 큰따옴표 밖의 $PATH가 깨집니다.임무 수행 중에는 안전합니다.
몇 가지 예를 들어주실 수 있나요? 감사해요.
답변1
단순 할당의 변수(예: a=$b
)는 정의(예: POSIX 사양)에 의해 정의되며 일반적으로 인용할 필요가 없습니다. 어쨌든 대부분의 경우입니다. 이는 "문자열 분할" 및 "와일드카드"(예: 공백 및 와일드카드)가 이러한 할당에서 확장되지 않기 때문입니다 *
.
그 외의 경우에는 할당을 제외한 변수( echo $b
)예echo "$b"
따라서 확장(공백 포함(문자열 분할))은 공백이 포함된 경우 문제를 방지하기 위해 따옴표( )로 묶어야 합니다 . 예를 들어, 예시로 사용하지 않고 echo
다른 명령을 사용하는 경우를 생각해 보세요. cmd $b
공백이 있으면 여러 인수를 받지만 $b
공백 cmd "$b"
이 있어도 하나의 인수를 받습니다.