/home 앞에 점을 추가하면 어떻게 되나요?

/home 앞에 점을 추가하면 어떻게 되나요?

스크립트를 실행하려면 ./script.ksh를 입력하지만 먼저 데이터베이스에 연결하려면 다음 경로를 입력합니다.. /

$ . /home/sqllib/db2profile 
$  db2

집에 가기 전에 왜 . / 사용하나요?

답변1

경로 이름에서 찾은 내용은 .명령과 관련이 없습니다 ..

.모든 디렉터리에 존재하며 현재 디렉터리를 지정하는 특수 파일 이름입니다. 따라서 ./script.ksh현재 디렉토리에 파일을 지정하는 script.ksh등의 작업을 수행합니다 ././script.ksh( ./././script.ksh경로 이름 파서에게 현재 디렉토리에서 자체로, 자체로, 자체로 이동하도록 요청하는 횟수는 중요하지 않습니다...). 다른 이유들 중에서 우리는 ./script.ksh단순히 script.ksh쉘 명령이 아닌 경로 이름을 의미한다는 것을 나타내기 위해 대신 사용합니다.

.또한 쉘이 외부 명령으로 실행하는 대신 쉘의 현재 환경에 인수로 제공된 파일의 내용을 얻도록 하는 쉘 내장 명령입니다. 명령 은 여러 셸에서 철자를 입력 .할 수도 있습니다 source(이는 레거시 호환성 별칭에서 유래함 csh). 이는 쉘 명령(예: 단일 구두점으로 구성됨 :)이므로 항상 공백이 따라옵니다.

답변2

이 경우, .쉘은 /home/sqllib/db2profile스크립트를 실행하기 위해 새 쉘 프로세스를 시작하는 대신 현재 쉘 프로세스의 컨텍스트에서 다음 스크립트(이 경우)를 실행하라는 지시를 받습니다.

그 이유는 이름 뒤에 오는 스크립트가 .다른 프로그램에 필요한 환경 변수를 생성할 수 있기 때문입니다. 이름 앞에 쉘 스크립트가 없으면 .스크립트를 실행하기 위해 새로운 프로세스가 시작되므로 스크립트가 완료되고 해당 프로세스가 종료되면 스크립트에서 생성된 모든 환경 변수가 손실됩니다. 스크립트 앞에 배치하면 .스크립트가 현재 쉘 프로세스에 의해 실행되므로 스크립트에 의해 생성된 모든 환경 변수가 현재 쉘의 컨텍스트에서 생성되므로 이러한 환경 변수는 나중에 실행되는 스크립트 및 프로그램에서 사용할 수 있습니다. db2다음 줄의 명령 과 같은 것입니다 .

관련 정보