내가 설치한 소프트웨어는 내 프로필에 다음과 같은 줄을 삽입했습니다.
[ -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의 문법 규칙을 적용하기 전에 간단한 명령으로 인식되는 명령 이름 단어에 대한 결과 단어를 검사하여 결정해야 합니다.인용되지 않았나요?, 유효한 별칭입니다.