내가 설치 한 소프트웨어는 다음과 같은 내용의 라인을 프로파일에 삽입했습니다.
[ -s "$SOME_FILE" ] && \. "$SOME_FILE"
나는 dot이와 .동의어 라는 것을 알고 source있으므로 이것이 파일을 소싱하는 것 같지만 전에는 본 적이 없다 \.. 다른 일을합니까?
DV 관련 편집 : “백 슬래시 도트”를 검색 ./하면 실행 파일을 호출 할 때 질문 이 표시 man source되고 맨 페이지가 \.나타나지 않는 경우가 있습니다. 무엇을 시도 해야할지 모르겠으므로 질문입니다.
편집 2 : 관련 질문보기
답변
따옴표 이외의 백 슬래시는 “파싱하는 동안 다음 문자를 그대로 해석”을 의미합니다. .파서의 일반적인 문자 이므로 \.와 같은 방식으로 구문 분석되고 .내장을 호출합니다 .(이것은 sourcebash의 동의어입니다).
이 맥락에서 차이를 만들 수있는 경우가 있습니다. 사용자가 호출 별칭 정의 경우 .사전에를 .profile, 그리고 .profile별칭을 확장 쉘에서 읽고있는 (어떤 비난이 대화 형으로 호출 할 때 오직 기본적으로 수행) 다음 .별칭을 트리거,하지만 \.여전히 내장을 트리거 것, 쉘 때문에 어떤 식 으로든 인용 된 단어에 대해 별칭 확장을 시도하지 않습니다.
에 대한 별칭을 만든 후 사용자가 불만을 제기했기 때문에 .로 변경 되었다고 생각합니다 .\..
참고 \.라는 함수를 호출 할 것이다 .. 아마도 함수를 작성하는 사용자는 별칭을 작성하는 사용자보다 지식이 풍부하고 표준 명령을 재정의하는 .profile것이 타사의 코드를 포함시킬 경우 나쁜 아이디어라는 것을 알고있을 것입니다. 그러나 별칭과 함수를 모두 우회하려면을 쓸 수 command .있습니다. 이 스 니펫의 작성자는 command내장 기능 이없는 골동품 껍질에 관심이 있었 거나 인식하지 못했기 때문에이 작업을 수행하지 않았습니다.
그런데, 정의 어떤 에서 별칭은 .profile때문에 나쁜 생각 .profileA는 세션 초기화 스크립트가 아닌 쉘 초기화 스크립트. bash의 별칭은에 속해 있습니다 .bashrc.
답변
은 \.은 “문자 점”, 즉 단지 점이다. 표준 .명령으로 사용됩니다 ( sourcein 와 유사 bash).
POSIX 표준은 이것에 대해 말하기 위해 이것을 가지고 있습니다 (내 강조)
ㅏ
<backslash>인용되지 않은 는 다음을 제외 하고 다음 문자의 리터럴 값을 유지해야 합니다<newline>. a가<newline>뒤에 오는<backslash>경우, 쉘은 이것을 라인 연속으로 해석해야합니다. 그리고 분할 전에 토큰으로 입력을 제거한다 . 이스케이프 처리 는 입력에서 완전히 제거되고 공백으로 대체되지 않으므로 토큰 구분 기호로 사용할 수 없습니다.<backslash><newline><newline>
점 문자 는 별명을 지정할 수 있습니다.
$ alias .='echo hello'
$ .
hello
하는 수단 \.의 별칭 버전을 사용하지 않는 것입니다 .명령을 하기 때문에 ,
토큰이 분리 된 후 쉘 문법에서 문법 규칙을 적용하기 전에 간단한 명령의 명령 이름 단어로 식별되는 결과 단어를 검사해야합니다. 하여 인용되지 않은 유효한 별칭 이름 인지 .
