백슬래시 점은 명령으로 무엇을 의미합니까?

백슬래시 점은 명령으로 무엇을 의미합니까?

내가 설치한 소프트웨어는 내 프로필에 다음과 같은 줄을 삽입했습니다.

[ -s "$SOME_FILE" ] && \. "$SOME_FILE"

나는 점이 .동의어라는 source것을 알고 있으므로 이것이 단지 파일을 가져오는 것이라고 생각하지만 \.이전에는 다른 작업을 수행하는 것을 본 적이 없습니다.

DV에 관한 편집:./"백슬래시 점"을 검색하면 실행 파일을 호출할 때 문제가 발생 하고 맨페이지 man source\.나타나지 않습니다. 그 밖에 무엇을 시도해야 할지 모르겠으므로 이 질문을 드립니다.

편집 2:관련 질문 보기

답변1

따옴표 밖의 백슬래시는 "분석 중에 다음 문자를 문자 그대로 해석"한다는 의미입니다. .파서의 일반 문자이기 때문에 내장 명령 \.과 동일한 방식으로 구문 분석되고 호출됩니다 ( bash에서는 동의어입니다)...source

어떤 경우에는 이 경우에 차이가 있을 수 있습니다. 사용자가 .이전에 호출된 별칭을 정의했고 별칭을 확장하는 셸에서 읽고 있는 경우(bash는 기본적으로 대화식으로 호출될 때만 이 작업을 수행함) .profile별칭 이 트리거되지만 내장 명령은 계속 작동합니다. 쉘이 어떤 방식으로든 참조되는 단어에 대해 별칭 확장을 시도하지 않기 때문에 발생합니다..profile.\.

사용자가 에 글을 쓰고 있었기 때문에 .으로 변경된 것 같습니다 .\..

이는 이라는 \.함수를 호출한다는 점에 유의하세요 .. 아마도 함수를 작성하는 사용자는 별칭을 작성하는 사용자보다 지식이 더 많으며 .profile제3자의 코드를 포함하려는 경우 표준 명령을 재정의하는 것이 좋지 않다는 것을 알고 있을 것입니다. 그러나 별칭과 함수를 피하려면 다음과 같이 작성할 수 있습니다 command .. 이 코드 조각의 작성자는 내장 기능이 없는 골동품 쉘에 관심이 있거나 command이를 깨닫지 못했기 때문에 그렇게 하지 않았습니다. 그것.

그런데 정의는어느앨리어싱 인은 .profile나쁜 생각 .profile입니다.회의초기화 스크립트가 아닌껍데기초기화 스크립트. bash의 별칭은 에 속합니다 .bashrc.

답변2

이것은 \."문자 그대로의 점", 즉 단지 점입니다. 이는 표준 명령으로 처리됩니다 .( source의 명령 과 유사 bash).

POSIX 표준에는 다음과 같은 내용이 있습니다.이것에 대하여 (내 강조점)

<backslash>따옴표가 없는 A는 후속 문자의 리터럴 값을 유지합니다., 를 제외하고 <newline>. 가 <newline>뒤에 오면 <backslash>쉘은 이를 줄 연속으로 해석합니다.입력을 토큰으로 분할하기 전에 제거해야 합니다 <backslash>.<newline>. 이스케이프 문자는 <newline>입력에서 완전히 제거되고 공백으로 대체되지 않으므로 토큰 구분 기호로 사용할 수 없습니다.

도트 문자할 수 있는별명:

$ alias .='echo hello'
$ .
hello

이는 \.명령의 별칭 버전을 사용하지 않는다는 것을 의미합니다 ..왜냐하면,

토큰을 구분한 후 Shell Grammar의 문법 규칙을 적용하기 전에 간단한 명령으로 인식되는 명령 이름 단어에 대한 결과 단어를 검사하여 결정해야 합니다.인용되지 않았나요?, 유효한 별칭입니다.

관련 정보