실행해야 하는 일부 명령의 시작 부분에 추가 점이 있는 이유는 무엇입니까?

실행해야 하는 일부 명령의 시작 부분에 추가 점이 있는 이유는 무엇입니까?

weblogic 서버의 설치 ​​패키지를 다운로드했습니다. README에는 다음과 같은 명령을 실행해야 합니다.

Linux/Mac
$ . ./configure.sh

이런 일이 일어나는 것을 본 것은 이번이 처음이 아닙니다. 명령 시작 부분에 추가 점이 있는 이유는 무엇입니까? 그냥 해도 ./configure.sh결과는 똑같음

답변1

도트( .)는 파일에서 명령을 실행하기 위한 기호이며 도트에 인수로 제공됩니다. 예를 들어, 이 파일의 내용은 ./configure.sh현재 셸에서 실행됩니다. 도트 명령은 Bourne 쉘에서 시작되었으며 Bash와 같은 다른 쉘에서도 사용할 수 있습니다.

Bash 매뉴얼 페이지에서

    .  filename [arguments]
source filename [arguments]
    Read  and  execute  commands from filename in the current shell
    environment and return the exit status of the last command executed from
    filename.  If filename does not contain a slash, file names in PATH are  used
    to  find  the directory  containing  filename.  The file searched for in PATH
    need not be executable.  When bash is not in posix mode, the current directory
    is searched if no file is found in PATH.   If  the  sourcepath  option  to  the
    shopt builtin  command  is  turned  off, the PATH is not searched.  If any
    arguments are supplied, they become the posi‐ tional parameters when filename
    is executed.  Otherwise the positional parameters are unchanged.  The return
    status is the status of the last command exited within the script (0 if no
    commands are executed), and false if filename is not found or cannot be read.

노트:command 와 같은 다른 셸에는 csh비슷한 명령이 있으며 source더 많은 최신 버전이 점 표기법과 명령을 지원합니다 source. Bash는 실제로 두 가지를 모두 지원합니다.

$SOMEVAR다음은 변수를 정의하는 파일을 가져와서 현재 셸에서 변수를 설정하는 예입니다 .

샘플 파일은 다음과 같습니다.

$ cat test.sh 
SOMEVAR="hi"

$SOMEVAR먼저 변수가 현재 셸에 이미 설정되어 있지 않은지 확인합니다 .

$ echo $SOMEVAR

$

이제 이를 가져와서 설정되었는지 확인합니다.

$ . ./test.sh 
$ echo $SOMEVAR
hi

이식성

이 점을 언급해 주신 @ChrisDown에게 감사드립니다. 점( .)은 POSIX의 일부로 지정되므로 이식 가능하지만 명령은 source그렇지 않습니다. 여기를 보아라Open Group 기본 사양 7호문서, 섹션: "2. 쉘 명령 언어". 특히 이 섹션.

발췌

이름

포인트 - 현재 환경에서 명령을 실행합니다.

요약

. 문서

설명하다

쉘은 현재 환경에서 파일의 명령을 실행해야 합니다.

파일이 포함되지 않은 경우 쉘은 PATH에 지정된 검색 경로를 사용하여 파일이 포함된 디렉토리를 찾습니다. 그러나 일반 명령 검색과 달리 도트 유틸리티로 검색한 파일은 실행 가능하지 않아도 됩니다. 읽을 수 있는 파일이 없으면 비대화형 쉘이 중단됩니다. 대화형 쉘은 표준 오류에 진단 메시지를 기록해야 하지만 이 경우 구문 오류로 간주되어서는 안 됩니다.

관련 정보