왜 이런거야?
내가 할 때
CD ~/Desktop
데스크톱으로 이동하지 않습니다. 하지만 이것은:
echo "foo
bar" | GREP bar
나에게주세요:
bar
답변1
다른 질문으로 판단하면 OS X를 사용하고 있다고 가정합니다. OS의 기본 HFS+ 파일 시스템 Cygwin에서 또는 FAT32와 같은 대소문자를 구분하지 않는 파일 시스템을 사용하거나CIOPFS) 어디서나.
실제 실행 파일 이므로 grep
파일 시스템(디렉토리 PATH
)을 살펴봅니다. 쉘이 /usr/bin
또는 를 grep
찾으면 실행 파일을 GREP
찾습니다 grep
.
쉘 내장 함수는 다음과 같습니다.아니요파일 시스템에서 찾기: 내장되어 있기 때문에 쉘 자체 내에서 (대소문자 구분) 문자열 비교를 통해 액세스할 수 있습니다.
당신이 만난 것은 흥미로운 사례입니다. while cd
은 내장 함수이고 액세스 시 대소문자를 구분하며 CD
실행 파일로 발견됩니다 /usr/bin/cd
. 실행 파일은 cd
쓸모가 없습니다: 왜냐하면cd
항상 일반 쉘 내장으로 제공되는 현재 쉘 실행 환경에 영향을 줍니다.cd
, 실행 파일이 있습니다.POSIX를 위해그럼에도 불구하고 자체 디렉터리를 변경한 다음 즉시 종료되고 주변 셸은 시작된 위치에 그대로 남아 있습니다.
다음 명령을 사용하여 시도해 볼 수 있습니다.type
내장:
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
type
이 명령을 실행할 때 쉘이 수행할 작업을 알려줍니다. 실행하면 cd
내장 프로그램에 액세스하지만 CD
실행 파일을 찾습니다. 다른 내장 기능과 마찬가지로 내장 기능과 실행 파일도 상당히 호환되지만(try echo
) cd
이는 불가능합니다.