Bash 스크립트 - .실제로 작동하나요? [복사]

Bash 스크립트 - .실제로 작동하나요? [복사]

매우 간단한 질문임에는 틀림없지만, 검색이 어렵기 때문에(또는 적어도 올바른 용어를 모르기 때문에) Google을 통해 합리적인 답변을 찾는 데 어려움을 겪고 있습니다.

스크립트에서 마침표가 사용되는 것을 확인했습니다(예: "점", 일명 이 사람 > "."). 기본적으로 현재 작업 경로를 정의하는 "pwd"로 확장된 것 같습니다( ls -la예: 의 출력에 따라). . 그러나 분명히 더 많은 것이 있습니다. 예를 들어 여기에 "."가 어떻게 작동하는지 이해하지 못하는 두 가지 예가 있습니다. 사용되는 것과 실제로 의미하는 것:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

이:

. <(cat /proc/32684/environ |xargs -0 -i echo {} |grep SSH)

(참고: 이것은 ssh-agent에 관한 흥미로운 기사에서 가져온 것입니다:http://rabexc.org/posts/pitfalls-of-ssh-agents)

이것이 사용되는 맥락을 살펴보면 마침표는 "현재 프로세스" 또는 이와 유사한 것(아마도 현재 셸?)과 여기에 로드되는 파일 또는 명령 대체의 출력을 나타내는 것 같습니다.

그래도 계속해서 추측하고 가정하기보다는 답을 알아가는 것이 좋을 것 같습니다 :-)

편집하다: 보너스 질문입니다. "#!"은 shebang/hash-bang/Sharp-bang 등입니다. 도트 연산자/단축키에 대한 용어/이름이 있습니까?

답변1

해당 파일이 있으면 실행해 보세요.

. 예를 들어 <(ls)는 디렉터리의 모든 파일을 실행합니다. 이름은 도트입니다. 이것이 제가 온라인에서 찾은 것입니다. https://pubs.opengroup.org/onlinepubs/009695399/utilities/dot.html 그런데 솔직히 저는 초보라서 오늘 막 가입했어요, 하하. 나는 곧 많은 천재들이 이 질문에 답하는 것을 보게 될 것이라고 확신합니다.

답변2

간단히 말해서:

  1. 이것을 "점 표기법"이라고 합니다.
  2. 이 명령 source은 도트 명령의 별칭입니다..

Prvt_Yadav의 링크에 몇 가지 설명이 있습니다(https://stackoverflow.com/q/16011245/9235408) 및 Wayland(https://unix.stackexchange.com/a/114306/266125) 그러나 여기서 질문에 대답하려면 다음을 수행하십시오.

사용. ./(도트 스페이스 도트 슬래시).....하위 쉘을 포크하지 않고 현재 쉘에서 스크립트를 실행합니다.

답변:https://stackoverflow.com/a/16011496/2927555

현재 셸의 스크립트 파일에서 소스 코드를 가져오려면 점 표기법을 사용하세요. 즉, 하위 셸을 만들 필요가 없습니다.

답변:https://stackoverflow.com/a/16011414/2927555

관련 정보